Basic operations on arrays
1. Arithmetic operations
In [11]:x=np.arange(0,5)
In [12]:y=np.arange(5,10)
In [13]:x+y
Out[13]:array([ 5, 7, 9, 11, 13])
In [14]:x-y
Out[14]:array([-5, -5, -5, -5, -5])
In [15]:x*y
Out[15]:array([ 0, 6, 14, 24, 36])
#数组a乘以数组b的平方根
In [16]:x * np.sqrt(y)
Out[16]:array([ 0. , 2.44948974, 5.29150262, 8.48528137, 12. ])
2. Matrix product
In [22]: a = np.arange(12).reshape(4, 3)
In [23]: a
Out[23]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
In [24]: b = np.arange(12).reshape(3, 4)
In [25]: b
Out[25]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [26]: np.dot(a,b)
Out[26]:
array([[ 20, 23, 26, 29],
[ 56, 68, 80, 92],
[ 92, 113, 134, 155],
[128, 158, 188, 218]])
In [27]: a.dot(b)
Out[27]:
array([[ 20, 23, 26, 29],
[ 56, 68, 80, 92],
[ 92, 113, 134, 155],
[128, 158, 188, 218]])
#np.dot(b, a) != np.dot(a, b)
In [29]: np.dot(b, a)
Out[29]:
array([[ 42, 48, 54],
[114, 136, 158],
[186, 224, 262]])
3. Auto-increment and auto-decrement operations
In [30]: a = np.arange(2,4)
In [31]: a++
File "<ipython-input-31-bdceb1bc89e4>", line 1
a++
^
SyntaxError: invalid syntax
#python没有++或--运算符,对变量的值进行自增或自减,需要使用+=或-=运算符
In [32]: a--
File "<ipython-input-32-59ad1d88dade>", line 1
a--
^
SyntaxError: invalid syntax
4. Aggregate function
Concept : refers to a function that operates on a set of values (such as an array) and returns a single value as the result.
#创建一维数组
In [35]: a = np.array([2, 4, 5, 7, 8])
In [36]: a
Out[36]: array([2, 4, 5, 7, 8])
#求和
In [38]: a.sum()
Out[38]: 26
#算术平均数
In [39]: a.mean()
Out[39]: 5.2000000000000002
#标准差
In [41]: a.std()
Out[41]: 2.1354156504062622
#方差
In [42]: a.var()
Out[42]: 4.5600000000000005
#最小值
In [43]: a.min()
Out[43]: 2
#最大值
In [44]: a.max()
Out[44]: 8
#最小值索引
In [45]: a.argmin()
Out[45]: 0
#最大值索引
In [46]: a.argmax()
Out[46]: 4
#所有元素累积和
In [47]: a.cumsum()
Out[47]: array([ 2, 6, 11, 18, 26], dtype=int32)
#所有元素累计积
In [48]: a.cumprod()
Out[48]: array([ 2, 8, 40, 280, 2240], dtype=int32)
5. Matrix transpose
In [49]: x = np.arange(0,12).reshape((4,3))
In [50]: x
Out[50]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
In [51]: x.T
Out[51]:
array([[ 0, 3, 6, 9],
[ 1, 4, 7, 10],
[ 2, 5, 8, 11]])
6. Introduction of several functions
#clip(Array, Array_min, Array_max):
#判断是否有比最小值小的或者比最大值大的元素,并将这些指定的元素转换为最小值或者最大值
In [52]: x = np.arange(0,24,2).reshape((4,3))
In [53]: x
Out[53]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16],
[18, 20, 22]])
In [54]: np.clip(x,5,15)
Out[54]:
array([[ 5, 5, 5],
[ 6, 8, 10],
[12, 14, 15],
[15, 15, 15]])
#diff:(累差运算函数)每一行中后一项与前一项之差
In [55]: np.diff(x,axis=1)
Out[55]:
array([[2, 2],
[2, 2],
[2, 2],
[2, 2]])
In [56]: np.diff(x,axis=0)
Out[56]:
array([[6, 6, 6],
[6, 6, 6],
[6, 6, 6]])
#将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵
In [58]: np.nonzero(x)
Out[58]:
(array([0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], dtype=int64),
array([1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))
7. Specify row and column operations
#axis应用
In [60]: a=np.arange(0,24,2).reshape(4,3)
In [61]: a
Out[61]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16],
[18, 20, 22]])
#横坐标为第1,2行,纵坐标为第0列
In [62]: a[[1,2],:1]
Out[62]:
array([[ 6],
[12]])
#横坐标为第1,2行,纵坐标为第0,1,2列
In [63]: a[[1,2],:3]
Out[63]:
array([[ 6, 8, 10],
[12, 14, 16]])
#横坐标为第0,1,2行,纵坐标为第0,1,2列
In [64]: a[:3,:3]
Out[64]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
#横坐标为第2行,纵坐标为第0,1,2列
In [65]: a[2][:3]
Out[65]: array([12, 14, 16])
#横坐标为第2行,纵坐标为0,1列
In [66]: a[2][:2]
Out[66]: array([12, 14])
#横坐标为第0,1行,纵坐标为0,1,2列
In [67]: a[:2][:2]
Out[67]:
array([[ 0, 2, 4],
[ 6, 8, 10]])