numpy
1.numpy 的属性
导入numpy
import numpy as np
创建一个2x3矩阵。
>>> arr = np.array([[1,2,3],[4,5,6]])
>>> arr
array([[1, 2, 3],
[4, 5, 6]])
属性
>>> arr.ndim #行数
2
>>> arr.shape #形状
(2, 3)
>>> arr.size #元素
6
2.numpy----array
创建的几种形式
#一维
>>> a = np.array([1,2,3])
>>> a
array([1, 2, 3])
#三维
a = np.ones(36).reshape(4,3,3)
>>> a
array([[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]]])
#指定类型
>>> a.dtype
dtype('int32')
>>> a = np.array([1,2,3], dtype=np.int64)
>>> a.dtype
dtype('int64')
#all0
a = np.zeros((2,3))
>>> a
array([[0., 0., 0.],
[0., 0., 0.]])
#all1
>>> a = np.ones((2,3))
>>> a
array([[1., 1., 1.],
[1., 1., 1.]])
#空
a = np.empty((6,3))
>>> a
array([[6.23042070e-307, 4.67296746e-307, 1.69121096e-306],
[1.33509100e-307, 1.89146896e-307, 7.56571288e-307],
[3.11525958e-307, 1.24610723e-306, 1.37962320e-306],
[1.29060871e-306, 2.22518251e-306, 1.33511969e-306],
[1.78022342e-306, 1.05700345e-307, 1.11261027e-306],
[9.34609111e-307, 1.78019625e-306, 2.22522596e-306]])
#范围
a = np.arange(0, 50, 5)
>>> a
array([ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45])
>>> a = np.arange(0, 50, 5).reshape((5, 2))
>>> a
array([[ 0, 5],
[10, 15],
[20, 25],
[30, 35],
[40, 45]])
#线段
>>> a = np.linspace(1, 10, 5)
>>> a
array([ 1. , 3.25, 5.5 , 7.75, 10. ])
#随机
>>> a = np.random.random((3,4))
>>> a
array([[0.99823673, 0.90458893, 0.04834939, 0.92980233],
[0.71134664, 0.72706356, 0.98548836, 0.3914585 ],
[0.50880033, 0.25018314, 0.12339585, 0.80470784]])
3.numpy运算
>>> a = np.arange(1, 10).reshape(3, 3)
>>> a
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> b = np.arange(11, 20).reshape(3, 3)
>>> b
array([[11, 12, 13],
[14, 15, 16],
[17, 18, 19]])
#+
>>> a + b
array([[12, 14, 16],
[18, 20, 22],
[24, 26, 28]])
#-
>>> a - b
array([[-10, -10, -10],
[-10, -10, -10],
[-10, -10, -10]])
#*
>>> a * b
array([[ 11, 24, 39],
[ 56, 75, 96],
[119, 144, 171]])
#/
>>> a / b
array([[0.09090909, 0.16666667, 0.23076923],
[0.28571429, 0.33333333, 0.375 ],
[0.41176471, 0.44444444, 0.47368421]])
#判断
>>> a < 8
array([[ True, True, True],
[ True, True, True],
[ True, False, False]])
#系数*
>>> a * 3
array([[ 3, 6, 9],
[12, 15, 18],
[21, 24, 27]])
#点乘
>>> np.dot(a, b)
array([[ 90, 96, 102],
[216, 231, 246],
[342, 366, 390]])
>>> a.dot(b)
array([[ 90, 96, 102],
[216, 231, 246],
[342, 366, 390]])
>>> a
array([[0.99823673, 0.90458893, 0.04834939, 0.92980233],
[0.71134664, 0.72706356, 0.98548836, 0.3914585 ],
[0.50880033, 0.25018314, 0.12339585, 0.80470784]])
>>> sum(a)
array([2.2183837 , 1.88183563, 1.1572336 , 2.12596867])
>>> np.sum(a)
7.383421595487194
>>> np.min(a)
0.04834939093017865
>>> np.max(a)
0.9982367253794127
>>> np.sum(a, axis=0)
array([2.2183837 , 1.88183563, 1.1572336 , 2.12596867])
>>> np.sum(a, axis=1)
array([2.88097738, 2.81535706, 1.68708716])
>>> a
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> np.argmin(a)
0
>>> np.argmax(a)
8
#平均数
>>> np.mean(a)
5.0
#中位数
>>> np.median(a)
5.0
#累加
>>> np.cumsum(a)
array([ 1, 3, 6, 10, 15, 21, 28, 36, 45], dtype=int32)
#差值
>>> np.diff(a)
array([[1, 1],
[1, 1],
[1, 1]])
>>> np.sort(a)
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
#转置
>>> np.transpose(a)
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
>>> np.clip(a, 4, 8)
array([[4, 4, 4],
[4, 5, 6],
[7, 8, 8]])
4.索引
>>> a
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> a[1]
array([4, 5, 6])
>>> a[0][1]
2
>>> a[0, 1]
2
>>> a[0, 1:2]
array([2])
>>> for r in a:
print(r)
[1 2 3]
[4 5 6]
[7 8 9]
>>> a.flatten()
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> for i in a.flat:
print(i)
1
2
3
4
5
6
7
8
9
5.array合并
>>> a = np.array([1,2,3])
>>> b = np.array([4,5,6])
>>> c = np.vstack((b, a))
>>> c
array([[4, 5, 6],
[1, 2, 3]])
>>> c = np.hstack((a, b))
>>> c
array([1, 2, 3, 4, 5, 6])
>>> c[:, np.newaxis]
array([[1],
[2],
[3],
[4],
[5],
[6]])
>>> np.concatenate((a,a,a,b,b))
array([1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 5, 6, 4, 5, 6])
6.分割
>>> a = np.random.random((3,4))
>>> a
array([[0.33656031, 0.46727607, 0.78883281, 0.18007219],
[0.8953377 , 0.9237175 , 0.15479897, 0.59258934],
[0.69871501, 0.67408845, 0.24632351, 0.92759847]])
>>> np.split(a, 2, axis=1)
[array([[0.33656031, 0.46727607],
[0.8953377 , 0.9237175 ],
[0.69871501, 0.67408845]]), array([[0.78883281, 0.18007219],
[0.15479897, 0.59258934],
[0.24632351, 0.92759847]])]
>>> np.array_split(a, 2, axis=0)
[array([[0.33656031, 0.46727607, 0.78883281, 0.18007219],
[0.8953377 , 0.9237175 , 0.15479897, 0.59258934]]), array([[0.69871501, 0.67408845, 0.24632351, 0.92759847]])]
>>> np.vsplit(a, 3)
[array([[0.33656031, 0.46727607, 0.78883281, 0.18007219]]), array([[0.8953377 , 0.9237175 , 0.15479897, 0.59258934]]), array([[0.69871501, 0.67408845, 0.24632351, 0.92759847]])]
>>> a
array([[0.33656031, 0.46727607, 0.78883281, 0.18007219],
[0.8953377 , 0.9237175 , 0.15479897, 0.59258934],
[0.69871501, 0.67408845, 0.24632351, 0.92759847]])
>>> np.hsplit(a, 2)
[array([[0.33656031, 0.46727607],
[0.8953377 , 0.9237175 ],
[0.69871501, 0.67408845]]), array([[0.78883281, 0.18007219],
[0.15479897, 0.59258934],
[0.24632351, 0.92759847]])]
7.复制
>>> a = np.array([1,2,3,4])
>>> b = a
>>> c = a
>>> a[0] = 22
>>> b
array([22, 2, 3, 4])
>>> c
array([22, 2, 3, 4])
>>> b[0] = 10
>>> a
array([10, 2, 3, 4])
>>> c
array([10, 2, 3, 4])
>>> b = a.copy()
>>> b
array([10, 2, 3, 4])
>>> a[0] = 8
>>> b
array([10, 2, 3, 4])
>>>