掌握ufunc函数
ufunc函数是针对数组进行操作的函数,常用的ufunc函数运算有四则运算、比较运算和逻辑运算等。
数组的四则运算,如代码 45所示。
In[16]: | x = np.array([1,2,3]) y = np.array([4,5,6]) print('数组相加结果为:',x + y) #数组相加 |
Out[16]: | 数组相加结果为: [5 7 9] |
In[17]: | print('数组相减结果为:',x - y) #数组相减 |
Out[17]: | 数组相减结果为: [-3 -3 -3] |
In[18]: | print('数组相乘结果为:',x * y) #数组相乘 |
Out[18]: | 数组相乘结果为: [ 4 10 18] |
In[19]: | print('数组相除结果为:',x / y) #数组相除 |
Out[19]: | 数组相除结果为: [ 0.25 0.4 0.5 ] |
In[20]: | print('数组幂运算结果为:',x ** y) #数组幂运算 |
Out[20]: | 数组幂运算结果为: [ 1 32 729] |
比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果,如代码 46所示。
In[21]: | x = np.array([1,3,5]) y = np.array([2,3,4]) print('数组比较结果为:',x < y) |
Out[21]: | 数组比较结果为: [ True False False] |
In[22]: | print('数组比较结果为:',x > y) |
Out[22]: | 数组比较结果为: [False False True] |
In[23]: | print('数组比较结果为:',x == y) |
Out[24]: | 数组比较结果为: [False True False] |
In[24]: | print('数组比较结果为:',x >= y) |
Out[24]: | 数组比较结果为: [False True True] |
In[25]: | print('数组比较结果为:',x <= y) |
Out[25]: | 数组比较结果为: [ True True False] |
In[26]: | print('数组比较结果为:',x != y) |
Out[26]: | 数组比较结果为: [ True False True] |
在NumPy逻辑运算中,np.any函数表示逻辑“or”,np.all函数表示逻辑“and”,如代码 47所示。
In[27]: | print('数组逻辑运算结果为:',np.all(x == y)) # np.all()表示逻辑and |
Out[27]: | 数组逻辑运算结果为: False |
In[28]: | print('数组逻辑运算结果为:',np.any(x == y)) # np.any()表示逻辑or |
Out[28]: | 数组逻辑运算结果为: True |
-
-
- ufunc函数的广播机制
-
以一维数组和二维数组举例说明广播的运算机制。
一维数组的广播机制,如代码 48所示。
代码 48 一维数组的广播机制
In[29]: | arr1 = np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]]) print('创建的数组1为:',arr1) |
Out[29]: | 创建的数组1为: [[0 0 0] [1 1 1] [2 2 2] [3 3 3]] |
In[30]: | print('数组1的shape为:',arr1.shape) |
Out[30]: | 数组1的shape为: (4, 3) |
In[31]: | arr2 = np.array([1,2,3]) print('创建的数组2为:',arr2) |
Out[31]: | 创建的数组2为: [1 2 3] |
In[32]: | print('数组2的shape为:',arr2.shape) |
Out[32]: | 数组2的shape为: (3,) |
In[33]: | print('数组相加结果为:',arr1 + arr2) |
Out[33]: | 数组相加结果为: [[1 2 3] [2 3 4] [3 4 5] [4 5 6]] |
二维数组的广播机制,如代码 49所示。
代码 49 二维数组的广播机制
In[34]: | arr1 = np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]]) print('创建的数组1为:',arr1) |
Out[34]: | 创建的数组1为: [[0 0 0] [1 1 1] [2 2 2] [3 3 3]] |
In[35]: | print('数组1的shape为:',arr1.shape) |
Out[35]: | 数组1的shape为: (4, 3) |
In[36]: | arr2 = np.array([1,2,3,4]).reshape((4,1)) print('创建的数组2为:',arr2) |
Out[36]: | 创建的数组2为: [[1] [2] [3] [4]] |
In[37]: | print('数组2的shape为:',arr2.shape) |
Out[37]: | 数组2的shape为: (4, 1) |
In[38]: | print('数组相加结果为:',arr1 + arr2) |
Out[38]: | 数组相加结果为: [[1 1 1] [3 3 3] [5 5 5] [7 7 7]] |