[python3 Numpy 填坑之旅]使用Numpy广播机制实现数组与数字比较大小的问题

304 阅读1分钟

在使用Numpy开发的时候,遇到一个问题,需要Numpy数组的每一个元素都与一个数进行比较,返回逻辑数组。
我们在使用Numpy计算是可以直接使用数组与数字运算,十分方便。当我尝试使用广播机制来处理数组与数字比较大小问题的时候发现广播机制同样适用,以下是测试代码:

  • 示例一,二维数组与数字大小比较:
import numpy as np

a = np.linspace(1,12,12).reshape(3,-1)
print("a is /n", a)
b = 3
c = a > b
print("c is /n", c)

结果:由此可以看出c被广播成了一个3x4,各元素值都为3的二维数组

a is
 [[ 1.  2.  3.  4.]
 [ 5.  6.  7.  8.]
 [ 9. 10. 11. 12.]]
c is
 [[False False False  True]
 [ True  True  True  True]
 [ True  True  True  True]]
  • 实例二,二维数组与一维数组大小比较:
import numpy as np

a = np.linspace(1,12,12).reshape(4,-1)
d = np.linspace(2,4,3)
print("a is \n", a)
print("d is \n", d)
e = a > d
print("e is \n",e )

结果:表明d被广播成了3x4的二维数组,列向量分别为[2. 3. 4.]

a is
 [[ 1.  2.  3.]
 [ 4.  5.  6.]
 [ 7.  8.  9.]
 [10. 11. 12.]]
d is
 [2. 3. 4.]
e is
 [[False False False]
 [ True  True  True]
 [ True  True  True]
 [ True  True  True]]

其他的广播内容可以参考这个博客:
blog.csdn.net/xiaosongshi…