1. numpy 数组创建:
Import numpy as np
Arr = np.array([1,2,3,4,5])
Arr = np.array(range(5))
Arr = np.arange(10).reshape((2,5))
Arr = np.zeros((3,4))
Arr = np.ones((3,4))
创建一个对角线为1的正方形数组(方阵):np.eye(3)
>>> np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
2. 所有数组都有shape和dtype属性,不需要加()调用:
Arr.shape
Arr.dtyep
改变维度类型: Arr.reshape((1, 10))
改变数据类型:Arr.astype(np.int32)
展平数组:Arr.flatten()
3. 数组运算:
3.1 与常数预算——广播:
Arr + 3
Arr * 3
3.2 与相同维度数组运算——对应位置进行运算:
3.3 与不同维度数组进行运算,要求两个数组有某个维度相同,那么将低维度数组扩展到高维度进行运算:
>>> t22
array([[0],
[1],
[2],
[3]])
>>> t14
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]])
>>> t14+t22
array([[ 0, 1, 2, 3, 4, 5],
[ 7, 8, 9, 10, 11, 12],
[14, 15, 16, 17, 18, 19],
[21, 22, 23, 24, 25, 26]])
>>> t14*t22
array([[ 0, 0, 0, 0, 0, 0],
[ 6, 7, 8, 9, 10, 11],
[24, 26, 28, 30, 32, 34],
[54, 57, 60, 63, 66, 69]])
4. 数组转置:
>>> t = np.arange(6).reshape((2,3))
array([[0, 1, 2],
[3, 4, 5]])
>>> t.transpose()
array([[0, 3],
[1, 4],
[2, 5]])
>>>t.T
array([[0, 3],
[1, 4],
[2, 5]])
>>> arr5 = np.arange(24).reshape(2,3,4)
>>>arr5
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]]])
>>>arr5.transpose((1,2,0))
array([[[ 0, 12],
[ 1, 13],
[ 2, 14],
[ 3, 15]],
[[ 4, 16],
[ 5, 17],
[ 6, 18],
[ 7, 19]],
[[ 8, 20],
[ 9, 21],
[10, 22],
[11, 23]]])
5. 索引和切片:
In [96]: arr2
Out[96]:
array([[5, 6, 7, 8],
[3, 4, 5, 6]])
In [97]: arr2[0]
Out[97]: array([5, 6, 7, 8])
In [98]: arr2[0][1]
Out[98]: 6
In [103]: arr2[0][1:3]
Out[103]: array([6, 7])
In [104]: arr2[0][1:3]= 11
In [105]: arr2
Out[105]:
array([[ 5, 11, 11, 8],
[ 3, 4, 5, 6]])
In [127]: arr2[0, 3]
Out[127]: 8
In [135]: arr4 = np.arange(20).reshape(4,5)
In [136]: arr4
Out[136]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[