假设我有一个形状(2,4)的numpy ndarray如下
>>> array1 = numpy.random.rand(2,4)
array([[ 0.87791012, 0.84566058, 0.73877908, 0.40377929],
[ 0.9669688 , 0.15913901, 0.70374509, 0.95776427]])
我有第二个形状数组(2,)如下
>>> array2 = numpy.random.rand(2)
array([ 0.57126204, 0.67938752])
我想比较列维度上的两个数组,以找到array1中大于array2(elementwise)的元素。期望的结果是
array([[ 1., 1., 1., 0.],
[ 1., 0., 1., 1.]])
如果两者具有相同的尺寸,我可以直接使用(array1 > array2).astype(int)
。如果array1是一个包含多个列的多维数组,我使用以下方法涉及一个循环
results = np.zeros_like(array1)
for each in range(array1.shape[1]):
results[:,each] = array1[:,each] > array2
有更多的pythonic / numpy方式吗?
答案 0 :(得分:1)
将array2
重塑为形状为(2,1)
的二维数组,然后由numpy broadcasting进行比较:
(array1 > array2[:,None]).astype(int)
#array([[1, 1, 1, 0],
# [1, 0, 1, 1]])