1. Numpy的属性
ndim:维度; shape:行数和列数; size:元素个数
import numpy as np
arr=np.array([[1,2,3],[2,3,4]])
print(arr.ndim, arr.shape, arr.size) #:2 (2,3) 6
2. Numpy的创建
1.用arange创建连续数组:
print(np.arange(10,20,2)) # [10 12 14 16 18]
2. 用reshape改变数据的形状
a=np.arange(0,12,1).reshape((3,4)) #将数据转换为0~11,三行四列的矩阵
print(a)
e=np.arange(12,0,-1).reshape((3,4)) #将数据转换为12~1,三行四列的矩阵
print(e)
3. 矩阵a和b
a=np.array([[0,1],[2,3]]) a:[[0 1] b:[[0,1] a*b:为两矩阵对应元素相乘:[[0,1]
b=np.arange(4).reshape(2,2) [2 3]] [2,3]] [4,9]]
print(a*b)
print(np.dot(a,b)) np.dot(a,b)和 a.dot(b):两矩阵相乘 [[2 3]
print(a.dot(b)) [6 11]]
4. axis=1时,以行作为查找单元; axis=0时,以列作为查找单元
d=np.random.random((2,4)) #生成两行四列从0至1的矩阵
print(np.sum(d,axis=1)) #以行作为查找单元:[ele1 ele2]
print(np.sum(d,axis=0)) #以列作为查找单元:[ele1 ele2 ele3 ele4]
5. np.argmin(a) ;求矩阵中最小元素的索引
np.argmax(a);求矩阵中最大元素的索引
求解平均值:np.mean(e), np.average(e), e.mean()
累加函数:np.cumsum(e); 输出前0-i项的和
累差函数:np.diff(e) ;输出第i+1项的值-第i项的值
np.sort(e): 对矩阵中的每一行进行排序操作
6. 矩阵转置:np.transpose(e); e.T (关于轴对称)
7. 二维索引
e[1][1] = e[1,1];第二行第二列元素;
e[1, 1:3]; 第二行第二列元素和第二行第三列元素
for row in e: 取一行元素组成list
for column in e: 取一列元素组成list
8. Numpy合并
a=np.array([1,1,1]) [1 1 1]
b=np.array([2,2,2]) [2 2 2]
c=np.vstack((a,b)) #垂直合并 [[1 1 1]
d=np.hstack((a,b)) #水平合并 [2 2 2] [1 1 1 2 2 2]
print(c,d)
print(a[np.newaxis,:]) #将矩阵转换为1行3列 [[1 1 1]]
print(a[:,np.newaxis]) #将矩阵转换为3行1列:[[1] [1] [1]]
9. 分割
a=np.arange(12).reshape(3,4)
print(np.split(a,2,axis=1)) #纵向分割
# [array([[0,1],
[4,5],
[8,9]]),
array([[2,3],
[6,7],
[10,11]])]
不等量分割
print(np.array_split(a,3,axis=1)) #不等量分割 第一部分两列,第二部分一列,第三部分一列
纵向分割
np.vsplit(a,3) #纵向分割 [array([[0,1,2,3]]), array([[4,5,6,7]]), array([[8,9,10,11]])]
等价于np.split(a,3,axis=0)横向分割
横向分割
np.hsplit(a,2) #横向分割 [array([[0,1], [4,5], [8,9]]), array([[2,3], [6,7], [10,11]])]
np.split(a,2,axis=1) #纵向分割
10. 赋值、浅复制和深复制
1. 赋值
a=np.arange(4) #:[0 1 2 3]
b=a
a[0]=11
print(b) #:[11 1 2 3 ]
2. 判断两个变量是否完完全全相等
b is a #:True b完完全全是a
3. copy:b想要a的值,而又不想关联a;
b=a.copy()