NUMPY的学习之路(2)——索引,合并,分割,赋值
一、索引
1.1numpy数组的转置
A=np.arange(3,15).reshape(3,4)
print(A) print(A[2][0])
print(A[2,1])
print(A[2,:])#用冒号代替这一行所有的数 第二行的所有的数
print(A[:,1])#第一列的所有数
# 第一行的从1到3的值
print(A[1,1:3])
结果:

1.2矩阵的转置以及将矩阵转化为array
A=np.arange(3,15).reshape(3,4)
print(A)
for col in A.T:
#迭代a的列就是 迭代A的转置的行
print(col) a=A
print(a.flatten())#返回被改变的array
for item in a.flat:#a.flat 表示的是一个迭代期
print(item)
结果:

二、矩阵的合并
2.1基本上用 concatenate函数对矩阵进行合并
# array的合并
a=np.array([1,1,1])
b=np.array([2,2,2]) c=np.vstack((a,b))#纵向叠加成矩阵
print("纵向叠加:")
print(c)
print("为了之后的合并,我们对array进行reshape")
a=a.reshape(3,1)
print("reshape a:")
print(a)
b=b.reshape(3,1)
print("reshape b:")
print(b)
print("左右合并:")
d=np.hstack((a,b))#左右合并成一个矩阵 如果是序列的话 就是序列+序列=序列
print(d)
#
# # 想把a变成一个竖向的序列
# print(a.reshape(3,1)) # 多个arrayd 纵向或者横向的合并
print("多个矩阵或者array的合并")
c=np.concatenate((a,b,b,a),axis=0)#0是在上下的维度进行合并 按列合并
print("在上下维度合并")
print(c)
c=np.concatenate((a,b,b,a),axis=1)#0是在左右的维度进行合并 按行合并
print("在左右维度合并")
print(c)
结果:
纵向叠加:
[[1 1 1]
[2 2 2]]
为了之后的合并,我们对array进行reshape
reshape a:
[[1]
[1]
[1]]
reshape b:
[[2]
[2]
[2]]
左右合并:
[[1 2]
[1 2]
[1 2]]
多个矩阵或者array的合并
在上下维度合并
[[1]
[1]
[1]
[2]
[2]
[2]
[2]
[2]
[2]
[1]
[1]
[1]]
在左右维度合并
[[1 2 2 1]
[1 2 2 1]
[1 2 2 1]] Process finished with exit code 0
三、矩阵的分割
3.1等量的分割
a=np.array([1,1,1])
b=np.array([2,2,2])
# array的分割
a=np.arange(12).reshape(3,4)
print(a) print(np.split(a,2,axis=1))#要切割的矩阵 分割为几块 分割为行还是列 1表示分割为行(这里把行分为2列)
print(np.split(a,3,axis=0))#按列分为三块 把每一列分为三块 这边最好还是注意下axis 的值和对应的意思
结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])] Process finished with exit code 0
3.2不等量的分割
a=np.arange(12).reshape(3,4)
print(a)
# 如何进行不等量的分割
a=np.array_split(a,3,axis=1) #这里是把每行元素分成了三份
print(a)
结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])] Process finished with exit code 0
3.3分割的其它办法
# array的分割
a=np.arange(12).reshape(3,4)
print(a) # 分割的其它办法
print(np.vsplit(a,3))#v代表垂直分割
print(np.hsplit(a,2))#h代表水平分割
结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
四、array的相关赋值
其实就是就是如果想不相关,但是值是一样,那就用.copy(),这就叫深度复制
# array的相关赋值
a=np.arange(4)
print(a)
b=a#b就是指向ad 引用
c=a
d=b
a[0]=11
print(a)
print(b)
print(b is a)#可以看下是不是同一个a
print(a is d)#发现是同一个维度的
d[1:3]=[22,33]
print(a)#你改了不管其中那一个 都会变的
# 如果我们不想关联起来
b=a.copy()#deep copy 赋值但没有关联
a[3]=44
print(a)
print(b)
结果:
[0 1 2 3]
[11 1 2 3]
[11 1 2 3]
True
True
[11 22 33 3]
[11 22 33 44]
[11 22 33 3]
NUMPY的学习之路(2)——索引,合并,分割,赋值的更多相关文章
- numpy的学习之路(1)——创建数组以及基本运算
需要导入的包 import numpy as np import pandas 一.利用numpy创建数组 1.1创建简单数组 array =np.array([[1,2,3], [2,3,4]]) ...
- [转]Spark学习之路 (三)Spark之RDD
Spark学习之路 (三)Spark之RDD https://www.cnblogs.com/qingyunzong/p/8899715.html 目录 一.RDD的概述 1.1 什么是RDD? ...
- STM32学习之路入门篇之指令集及cortex——m3的存储系统
STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码 操作数1, 操作数2,... ...
- 【温故知新】——BABYLON.js学习之路·前辈经验(二)
前言:在上一篇随笔BABYLON.js学习之路·前辈经验(一)中回顾了组内同事们长时间在Babylon开发实践中的总结出的学习之路和经验,这一篇主要对开发中常见的一些功能点做一个梳理,这里只作为温故知 ...
- jQuery学习之路(1)-选择器
▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...
- 应用程序Cache对象到高性能Memcached学习之路
来源:微信公众号CodeL 以下是个人学习之路的简单分享,不足之处欢迎大神们批评指正! 在网站开发的初期,我们没有考虑更多的东西,也没有对缓存进行系统的设计,而是直接使用了应用程序缓存对象Cache, ...
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- 学习之路三十九:新手学习 - Windows API
来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...
- OpenGL学习之路(一)
1 引子 虽然是计算机科班出身,但从小对几何方面的东西就不太感冒,空间想象能力也较差,所以从本科到研究生,基本没接触过<计算机图形学>.为什么说基本没学过呢?因为好奇(尤其是惊叹于三维游戏 ...
随机推荐
- H3C 静态路由
一.静态路由简介 静态路由是一种特殊的路由,由管理员手工配置.当网络结构比较简单时,只需配置静态路由就可以使网络正常工作. 静态路由不能自动适应网络拓扑结构的变化.当网络发生故障或者拓扑发生变化后,必 ...
- python 中 if __name__ == '__main__' 判断的作用
假设这样一个a.py文件 def fun1(): ........ def fun2(): ......... if __name__=='__main__': ......#执行的一些语句 当你执行 ...
- numpy 一些知识
import numpy as np 什么类型的相加,返回的还是什么类型的,所以在累加小类型的数值时会出现问题如下: a=np.array([123,232,221], dtype=np.uint8) ...
- AE接口编程
[转]原文链接:https://malagis.com/arcgis-engine-10-develop-handbook-2-1.html 使用 ArcGIS Engine,也就意味着使用里面的接口 ...
- JS高级---递归案例
递归案例 递归案例: 求一个数字各个位数上的数字的和: 123 --->6 ---1+2+3 //递归案例:求一个数字各个位数上的数字的和: 123 --->6 ---1+2 ...
- Android开发之JDK配置,及ADT下载
第一步: 到官网上下载jdk,记住关键的一点,首先要查看自己的windows电脑是32位的还是64位的,这里想下载相应的位数的jdk 第二步: 安装JDK,一般默认安装路径,不做自己修改安装路径,如: ...
- centos docker 防火墙设置(多个ip之间互相访问)
[Solution] Update firewall policy 1) Disabled docker rules of iptables --- docker will create ...
- thinkphp3.2 中 Memcache 的配置和使用(memcahe的使用场景)
Thinkphp的默认缓存方式是以File方式,在/Runtime/Temp 下生成了好多缓存文件. TIPS: TP3.2支持的缓存方式有:数据缓存类型,支持:File|Db|Apc|Memcach ...
- ansible笔记(12):变量(一)
1.定义变量规范 先说说怎样定义变量,变量名应该由字母.数字.下划线组成,变量名需要以字母开头,ansible内置的关键字不能作为变量名. 2.定义变量,使用关键字:vars 定义变量用vars,调用 ...
- Runtime.getRuntime.exec()执行linux脚本导致程序卡死有关问题
Runtime.getRuntime.exec()执行linux脚本导致程序卡死问题问题: 在Java程序中,通过Runtime.getRuntime().exec()执行一个Linux脚本导致程序被 ...