Numpy学习笔记1

导入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/

你可能感兴趣的:(Numpy学习笔记1)