Numpy的“增”操作
import numpy as np
arr1 = np.array([1,2,3,4])
arr1
array([1, 2, 3, 4])
arr2 = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
arr2
array([[ 1, 2, 3, 4],
[ 4, 5, 6, 7],
[ 7, 8, 9, 10]])
np.linspace(0,1,12)
array([0. , 0.09090909, 0.18181818, 0.27272727, 0.36363636,
0.45454545, 0.54545455, 0.63636364, 0.72727273, 0.81818182,
0.90909091, 1. ])
np.logspace(0,2,20)
array([ 1. , 1.27427499, 1.62377674, 2.06913808,
2.6366509 , 3.35981829, 4.2813324 , 5.45559478,
6.95192796, 8.8586679 , 11.28837892, 14.38449888,
18.32980711, 23.35721469, 29.76351442, 37.92690191,
48.32930239, 61.58482111, 78.47599704, 100. ])
np.zeros((2,3))
array([[0., 0., 0.],
[0., 0., 0.]])
np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
np.diag([1,2,3,4])
array([[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]])
numpy的“查”的操作
arr2.shape
(3, 4)
arr2.ndim
2
print(arr2.size)
print(arr2.dtype)
print(arr2.itemsize)
12
int32
4
np.float64(56)
56.0
np.int8(42.00)
42
np.bool(100)
True
np.bool(0)
False
np.float(True)
1.0
np.float(False)
0.0
数组的索引查找
arr2[0][3]
4
arr2[0]
array([1, 2, 3, 4])
arr2[1][::2]
array([4, 6])
arr2[2][::-1]
array([10, 9, 8, 7])
arr2[0,0:3]
array([1, 2, 3])
数组的“改”操作
arr2.shape
(3, 4)
arr2
array([[ 1, 2, 3, 4],
[ 4, 5, 6, 7],
[ 7, 8, 9, 10]])
arr2.shape=4,3
arr2
array([[ 1, 2, 3],
[ 4, 4, 5],
[ 6, 7, 7],
[ 8, 9, 10]])
arr1.reshape(2,2)
array([[1, 2],
[3, 4]])
arr = np.arange(24).reshape(6,4)
arr
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
arr.ravel()
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
arr.flatten()
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
arr.flatten('F')
array([ 0, 4, 8, 12, 16, 20, 1, 5, 9, 13, 17, 21, 2, 6, 10, 14, 18,
22, 3, 7, 11, 15, 19, 23])
组合数组
arr3 = np.array([5,6,7,8])
np.hstack((arr1,arr3))
array([1, 2, 3, 4, 5, 6, 7, 8])
np.vstack((arr1,arr3))
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
np.concatenate((arr1,arr3),axis=0)
array([1, 2, 3, 4, 5, 6, 7, 8])
切割数组
np.hsplit(arr3,2)
[array([5, 6]), array([7, 8])]
np.vsplit(arr2,2)
[array([[1, 2, 3],
[4, 4, 5]]), array([[ 6, 7, 7],
[ 8, 9, 10]])]
np.split(arr2,2,axis=0)
[array([[1, 2, 3],
[4, 4, 5]]), array([[ 6, 7, 7],
[ 8, 9, 10]])]
numpy生成数组
np.random.random(100)
array([0.95167995, 0.18096859, 0.59236618, 0.02925964, 0.68336809,
0.23402786, 0.40671182, 0.51379527, 0.32574714, 0.43352915,
0.19183761, 0.84768984, 0.38245797, 0.29251648, 0.33354924,
0.56742841, 0.94358695, 0.35471753, 0.39552121, 0.81761974,
0.56879868, 0.10603172, 0.65322348, 0.36413706, 0.31022328,
0.90744888, 0.38275878, 0.79197704, 0.39482031, 0.20797927,
0.41242333, 0.24632201, 0.79073378, 0.15151093, 0.7314409 ,
0.91980904, 0.9071625 , 0.98319934, 0.68631568, 0.97157336,
0.40780328, 0.23930906, 0.23163062, 0.97764558, 0.2109298 ,
0.81922506, 0.49199927, 0.11258715, 0.40692308, 0.16889955,
0.11970872, 0.93883471, 0.70303988, 0.19425031, 0.61378164,
0.31978307, 0.35371854, 0.44751128, 0.33404667, 0.75165219,
0.15446359, 0.86320575, 0.06722929, 0.64939407, 0.01310356,
0.97779856, 0.33522086, 0.70020603, 0.14096877, 0.76475935,
0.15503171, 0.05361287, 0.68288931, 0.52869685, 0.2914454 ,
0.79378387, 0.67397387, 0.57745147, 0.04801953, 0.71848316,
0.63879409, 0.79271897, 0.86363712, 0.40322004, 0.51856314,
0.25570039, 0.15941114, 0.82583908, 0.16397461, 0.20660024,
0.5946275 , 0.03163121, 0.96312469, 0.38119408, 0.78471152,
0.28384807, 0.63412253, 0.15360871, 0.89758739, 0.34176362])
np.random.randn(10,5)
array([[-0.36248351, -1.75396469, -0.92900123, -0.49325275, -0.78623546],
[ 1.54322959, -0.30284396, 1.1177209 , -1.01253766, 1.19030247],
[-0.45491472, -0.14569622, 0.77666632, 0.22128488, 0.92204289],
[ 0.20691927, 0.04894845, -0.56984724, 1.07893663, 0.46180285],
[ 1.56787737, 0.46211699, -0.35937262, -0.25554625, 0.64089709],
[-1.49985201, 0.94343963, 0.24150247, -1.17155756, 0.0493493 ],
[-0.65965358, 1.78137852, -1.56151111, 1.05960132, -0.09131252],
[-1.77035465, 0.23162106, -0.67243185, -0.97087122, -0.18996355],
[-0.83800999, -1.50207623, -0.97118001, 0.71349047, -0.89711232],
[-0.06373938, 0.63000994, -1.1889798 , 0.2600065 , -0.50085781]])
np.random.randint(2,10, size=[2,5])
array([[2, 2, 9, 2, 8],
[2, 6, 4, 2, 2]])
Numpy矩阵操作
matr1 = np.mat("1 2 3; 4 5 6; 7 8 9")
matr1
matrix([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
matr2 = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
matr2
matrix([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
matr1 * 3
matrix([[ 3, 6, 9],
[12, 15, 18],
[21, 24, 27]])
matr1 + matr2
matrix([[ 2, 4, 6],
[ 8, 10, 12],
[14, 16, 18]])
matr1 * matr2
matrix([[ 30, 36, 42],
[ 66, 81, 96],
[102, 126, 150]])
np.dot(matr1,matr2)
matrix([[ 30, 36, 42],
[ 66, 81, 96],
[102, 126, 150]])
matr1.T
matrix([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
matr1.H
matrix([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
matr1.I
matrix([[ 3.15251974e+15, -6.30503948e+15, 3.15251974e+15],
[-6.30503948e+15, 1.26100790e+16, -6.30503948e+15],
[ 3.15251974e+15, -6.30503948e+15, 3.15251974e+15]])
练习
X1 = np.random.randint(0,1, size=[3,100])
W1 = np.random.randint(0,1, size=[5,3])
b1 = np.zeros((5,1))
W2 = np.random.randint(0,1, size=[2,5])
b2 = np.zeros((2,1))
A1 = np.dot(W1,X1) + b1
A1
array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0.]])
A2 = np.dot(W2,A1) + b2
A2.shape
(2, 100)
Numpy统计分析
arr4 = np.array([[3,7],[9,1]])
arr4
array([[3, 7],
[9, 1]])
arr4.sort()
arr4
array([[3, 7],
[1, 9]])
arr4.sort(axis=0)
arr4
array([[1, 7],
[3, 9]])
arr5 = np.array([4,3,2,1])
arr5.argsort()
array([3, 2, 1, 0], dtype=int64)
nm = ('a','b','c','c')
dv = ('z','x','y','o')
ind = np.lexsort((dv,nm))
print([nm[i]+","+dv[i] for i in ind])
['a,z', 'b,x', 'c,o', 'c,y']
arr6 = np.array([1,1,2,2,3,3])
np.unique(arr6)
array([1, 2, 3])
np.tile(arr6,3)
array([1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3])
np.repeat(arr6, 3, axis=0)
array([1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3])
arr2.sum(axis=0)
array([19, 22, 25])
arr2.sum(axis=1)
array([ 6, 13, 20, 27])
arr6.argmax()
4