导入Numpy
库
import numpy as np
基本操作
array = np.array([[1.1, 2, 3],
[2.1, 3, 4]], dtype=np.int64)
print(array)
print('维数:', array.ndim)
print('形状:', array.shape)
print('大小:', array.size)
print('类型:', array.dtype)
[[1 2 3]
[2 3 4]]
维数: 2
形状: (2, 3)
大小: 6
类型: int64
np.zeros((3,4))
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
np.ones((3,4))
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
np.empty((3,4))
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
np.arange(10, 34, 2).reshape((3,4))
array([[10, 12, 14, 16],
[18, 20, 22, 24],
[26, 28, 30, 32]])
np.linspace(1,10,5)
array([ 1. , 3.25, 5.5 , 7.75, 10. ])
运算
a = np.array([10,20,30,40])
b = np.array(4)
print('a:',a)
print('b:',b)
print('a+b:',a+b)
print('a-b:',a-b)
print('b的平方:',b**2)
print('10*sin(a):',10*np.sin(a))#弧度值
print('b<3:',b<3)
c = np.array([[1,1],
[0,1]])
d = np.arange(4).reshape((2,2))
print('c:',c)
print('d:',d)
print('逐个相乘:',c*d)#逐个相乘
print('矩阵乘法1:',np.dot(c,d))#矩阵乘法
print('矩阵乘法0:',c.dot(d))#矩阵乘法
a: [10 20 30 40]
b: 4
a+b: [14 24 34 44]
a-b: [ 6 16 26 36]
b的平方: 16
10*sin(a): [-5.44021111 9.12945251 -9.88031624 7.4511316 ]
b<3: False
c: [[1 1]
[0 1]]
d: [[0 1]
[2 3]]
逐个相乘: [[0 1]
[0 3]]
矩阵乘法1: [[2 4]
[2 3]]
矩阵乘法0: [[2 4]
[2 3]]
a = np.random.random((2,4))
print('a:',a)
print('a求和:',np.sum(a))
print('a行求和:',np.sum(a,axis=1))#axis=1行求和,axis=0列求和
print('a的最小值:',np.min(a,axis=0))
print('a的最大值:',np.max(a))
a: [[0.61961317 0.95169263 0.49257206 0.79382656]
[0.47724052 0.11682015 0.7192092 0.25277084]]
a求和: 4.423745121801128
a行求和: [2.85770442 1.56604071]
a的最小值: [0.47724052 0.11682015 0.49257206 0.25277084]
a的最大值: 0.9516926282917142
A = np.arange(2,14).reshape((3,4))
print('A:',A)
print('最小值索引:',np.argmin(A))
print('最大值索引:',np.argmax(A))
print('平均值1:',np.mean(A))
print('平均值2:',A.mean())
print('中位数:',np.median(A))
print('累加',np.cumsum(A))
print('和上一个的差',np.diff(A))
print('不是0的数',np.nonzero(A))#输出一个元组,行,列
print('排序',np.sort(A))
print('转置1:',np.transpose(A))
print('转置2:',A.T)
print('小于5的数为5,大于9的为9',np.clip(A,5,9))
A: [[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
最小值索引: 0
最大值索引: 11
平均值1: 7.5
平均值2: 7.5
中位数: 7.5
累加 [ 2 5 9 14 20 27 35 44 54 65 77 90]
和上一个的差 [[1 1 1]
[1 1 1]
[1 1 1]]
不是0的数 (array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
排序 [[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
转置1: [[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]]
转置2: [[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]]
小于5的数为5,大于9的为9 [[5 5 5 5]
[6 7 8 9]
[9 9 9 9]]
索引
A = np.arange(3,15)
print('A:',A)
print(A[3])
A = A.reshape(3,4)
print('A:',A)
print('A[2]',A[2])
print('A[1][1]',A[1][1])
print('A[1,1]',A[1,1])
print('A[2,:]',A[2,:])
for row in A:
print('row',row)
for column in A.T:
print('column',column)
for item in A.flat:
print('item',item)
A: [ 3 4 5 6 7 8 9 10 11 12 13 14]
6
A: [[ 3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]]
A[2] [11 12 13 14]
A[1][1] 8
A[1,1] 8
A[2,:] [11 12 13 14]
row [3 4 5 6]
row [ 7 8 9 10]
row [11 12 13 14]
column [ 3 7 11]
column [ 4 8 12]
column [ 5 9 13]
column [ 6 10 14]
item 3
item 4
item 5
item 6
item 7
item 8
item 9
item 10
item 11
item 12
item 13
item 14
合并
A = np.array([1,1,1])
B = np.array([2,2,2])
print('列合并',np.vstack((A,B)))
print('行合并',np.hstack((A,B)))
print('增加一个维度',A[np.newaxis,:])
print('多合并',np.concatenate((A,B,B,A),axis=0))
列合并 [[1 1 1]
[2 2 2]]
行合并 [1 1 1 2 2 2]
增加一个维度 [[1 1 1]]
多合并 [1 1 1 2 2 2 2 2 2 1 1 1]
分隔
A = np.arange(12).reshape(3,4)
print("A",A)
print('横向分隔',np.split(A,2,axis=1))
print('横向不等分隔',np.array_split(A,3,axis=1))
print('横向分隔',np.vsplit(A,3))
print('纵向分隔',np.hsplit(A,2))
A [[ 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],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[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]])]
浅拷贝深拷贝
a = np.arange(4)
b = a
c = a
d = b
a[0] = 11
print(b is a ,c is a,d is a)
True True True
b = a.copy()
a[3] = 44
print(b,b is a)
[11 1 2 3] False
参考
https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/