Numpy的数组array和矩阵matrix
Numpy的主要对象是同种元素的多维数组。区别于python的list(可存储多种)。这是一个所有的元素都是一种类型,通过一个正整数元组索引的元素表格(通常元素是是数字)。
在Numpy种维度(dimensions)角坐轴(axes)
0维(标量): 3
一维(数组/向量):[1,2]
二维(矩阵):[[1,2],[3,4]]
三维(及以上称为张量):[[[1,2],[3,4]]
numpy的索引和切片区别
最主要的是,索引维度根据索引输入维度,下降相应维度;切片,返回结果维度是不会下降的。
因此,"X[ 切片1,切片2]" 和" "X[切片1][切片2]"结果不相同。前面相当于”切片1" 匹配维度0索引,”切片2“匹配维度1索引。 后者则是, 先获取"X[切片1]" (数据维度不变),在原来的数据维度上,再获取依此”切片2“指定索引。
print("ndarray的基本索引") x = np.array([[1,2],[3,4],[5,6]]) print(x.shape) print(x[2]," ",x[2][1]) # 索引获取 print(x[2,1]) x = np.array([[ [1,2],[3,4] ,[[5,6],[7,8]]]]) print (x.shape) print(x) print(x[0,0,1]) y = x[0].copy() #生成一个副本 z = x[0] #未生成副本 。始终记得python赋值类似传引用。 print(y) print(z) y[0,0] = 9 #独立副本互不关联 print(y) print(x) z[0,0] = 9 # print(x) #切片演示 print("narray的切片") x = np.array([1,2,3,4,5]) print(x[1:4]) print(x[:3]) print(x[1:]) print(x) print(x[0:4:2]) x = np.array([[1,2],[3,4],[5,6]]) print(x[:2]) print(x[:2,:1]) #索引。注意左闭右开。切片前后数据维度不会降低。这边会生成成 索引值。最终形式是 [1,3] print(x[:2][:1]) #切片。和上面值不一样.切片不会改变数据维度。 过程是 获取 [[1,2],[3,4]] 此时维度还是之前的, 再接[:1] ,相当于取[1,2] x[:2,:1] = 9 #标量可以上升到任意维度进行广播 #x[:2,:1] = 3,4 #将会排除异常。 标量外的其余情况赋值,需要维度匹配. 全部是 切片,返回的数据维度不变。 有一个是标量,则是索引,维度下降