numpy和matplotlib (1)
1.如何创建一个numpy.array?
import numpy as np
nparr = np.array([i for i in range(10)])
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
nparr.dtype
# dtype('int32')
其他的创建方式
-
zeros()
np.zeros(10, dtype=int) # array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) np.zeros(shape=(3, 5), dtype=int) # array([[0, 0, 0, 0, 0], # [0, 0, 0, 0, 0], # [0, 0, 0, 0, 0]])
-
ones()
np.ones(shape=(3, 5)) # array([[1., 1., 1., 1., 1.], # [1., 1., 1., 1., 1.], # [1., 1., 1., 1., 1.]])
-
full()
np.full(shape=(3, 5), fill_value=666) # array([[666, 666, 666, 666, 666], # [666, 666, 666, 666, 666], # [666, 666, 666, 666, 666]])
-
arange()
np.arange(0, 20, 2) # 参数同range() # array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18]) np.arange(0, 1, 0.2) # 步长可以是浮点数 # array([0. , 0.2, 0.4, 0.6, 0.8])
-
linspace()
numpy.linspace(a, b, n)
在[a, b]中等长截取n个点,包括a和bnp.linspace(0, 10, 4) # array([ 0. , 3.33333333, 6.66666667, 10. ]) np.linspace(0, 20, 11) # array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20.])
2.numpy.random
随机数
-
randint()
产生整型np.random.randint(0, 10) # [a, b) # 8 np.random.randint(0, 10, size=10) # array([8, 5, 3, 7, 7, 3, 5, 0, 6, 6]) np.random.randint(0, 10, size=(3, 5)) # array([[3, 1, 7, 1, 7], # [4, 3, 9, 0, 9], # [5, 4, 5, 7, 9]])
-
seed()
随机种子:使随机产生的数固定np.random.seed(66)
-
random()
产生[0.0, 1.0)浮点型np.random.random((3, 5)) # array([[0.18125584, 0.20119264, 0.99774266, 0.77945293, 0.17220228], # [0.06591739, 0.7000292 , 0.00930508, 0.99817484, 0.63435204], # [0.27645231, 0.40791282, 0.94273693, 0.07972615, 0.36777773]])
-
normal()
符合正态分布地产生浮点数np.random.normal() # N(0, 1) # -0.3460568787534331 np.random.normal(100, 50) # N(100, 2500) # 122.21749887519869 np.random.normal(100, 50, size=3) # array([ 30.63267858, 78.09580145, 110.53398345])
3.numpy.array的属性
- ndim:维度,返回int
- shape:形状,返回tuple
- size:元素个数,返回int
X
# array([[3, 1, 7, 1, 7],
# [4, 3, 9, 0, 9],
# [5, 4, 5, 7, 9]])
X.ndim
# 2
X.shape
# (3, 5)
X.size
# 15
4.reshape()
x
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x.reshape(2, 5)
# array([[0, 1, 2, 3, 4],
# [5, 6, 7, 8, 9]])
x.reshape(-1, 10) # -1表示根据列数自动判断行数,必须整除!!
# array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
5.numpy数组/矩阵的合并与分割
-
concatenate()
合并,只支持向量+向量,或矩阵+矩阵x # array([0, 1, 2]) y # array([2, 1, 0]) np.concatenate([x, y]) # array([0, 1, 2, 2, 1, 0])
A # array([[0, 1, 2], # [3, 4, 5]]) np.concatenate([A, A]) # array([[0, 1, 2], # [3, 4, 5], # [0, 1, 2], # [3, 4, 5]]) np.concatenate([A, A], axis=1) # axis默认为0,竖直合并;axis=1水平合并 # array([[0, 1, 2, 0, 1, 2], # [3, 4, 5, 3, 4, 5]])
-
vstack()
竖直合并 -
hstack()
水平合并更加灵活,支持“矩阵+向量”的合并
z # array([666, 666, 666]) np.vstack([A, z]) # array([[ 0, 1, 2], # [ 3, 4, 5], # [666, 666, 666]]) y # array([[0], # [1]]) np.hstack([A, y]) # array([[0, 1, 2, 0], # [3, 4, 5, 1]])
-
split()
分割x # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) x1, x2, x3 = np.split(x, [3, 7]) # x1 array([0, 1, 2]) # x2 array([3, 4, 5, 6]) # x3 array([7, 8, 9]) np.split(x, [2]) # [array([0, 1]), array([2, 3, 4, 5, 6, 7, 8, 9])]
A # array([[ 0, 1, 2, 3], # [ 4, 5, 6, 7], # [ 8, 9, 10, 11], # [12, 13, 14, 15]]) np.split(A, [2]) # [array([[0, 1, 2, 3], # [4, 5, 6, 7]]), # array([[ 8, 9, 10, 11], # [12, 13, 14, 15]])] np.split(A, [2], axis=1) # [array([[ 0, 1], # [ 4, 5], # [ 8, 9], # [12, 13]]), # array([[ 2, 3], # [ 6, 7], # [10, 11], # [14, 15]])]
-
vsplit()
竖直分割 -
hsplit()
水平分割np.vsplit(A, [2]) # [array([[0, 1, 2, 3], # [4, 5, 6, 7]]), # array([[ 8, 9, 10, 11], # [12, 13, 14, 15]])] np.hsplit(A, [2]) # [array([[ 0, 1], # [ 4, 5], # [ 8, 9], # [12, 13]]), # array([[ 2, 3], # [ 6, 7], # [10, 11], # [14, 15]])]