【发布时间】:2020-09-15 14:38:53
【问题描述】:
假设我们有一个数组A,如果形状为(100,) 和B,形状为(10,)。两者都包含 [0,1] 中的值。
我们如何使A 中的元素计数大于B 中的每个值?我期望形状为(10,),其中第一个元素是“A 中有多少大于B[0]”,第二个是“A 中有多少大于B[1]”,等等。 .
不使用循环。
我尝试了以下方法,但没有成功:
import numpy as np
import numpy.random as rdm
A = rdm.rand(100)
B = np.linspace(0,1,10)
def occ(z: float) ->float:
return np.count_nonzero(A > z)
occ(B)
Python 不会将我的函数用作 B 上的标量函数,这就是我得到的原因:
operands could not be broadcast together with shapes (10,) (100,)
我也尝试过np.greater,但我遇到了同样的问题......
【问题讨论】:
标签: python numpy vectorization broadcasting