Python Numpy—计算值的数目,直到满足条件为止
如果我有两个相同大小的numpy数组Python Numpy—计算值的数目,直到满足条件为止,python,arrays,numpy,Python,Arrays,Numpy,如果我有两个相同大小的numpy数组 ArrayOne = np.array([ 2, 5, 5, 6, 7, 10, 13]) ArrayTwo = np.array([ 8, 10, 12, 14, 16, 18, 24]) 在数组开始之前,我如何计算有多少个元素。除非满足条件ArrayOne>=ArrayTwo。在这种情况下,在该条件之前有多少个元素。然后将结果生成一个数组 因此,作为元素[0]的示例,前面有0个元素。对于元素[1],前面有1个元素,ArrayOne>=ArrayTwo
ArrayOne = np.array([ 2, 5, 5, 6, 7, 10, 13])
ArrayTwo = np.array([ 8, 10, 12, 14, 16, 18, 24])
在数组开始之前,我如何计算有多少个元素。除非满足条件ArrayOne>=ArrayTwo。在这种情况下,在该条件之前有多少个元素。然后将结果生成一个数组
因此,作为元素[0]的示例,前面有0个元素。对于元素[1],前面有1个元素,ArrayOne>=ArrayTwo不满足要求。在ArrayTo中的元素[5]处,一个大于ArrayTo中的元素[0],因此在ArrayTo中的元素[1]之前有四个元素,以此类推。
给出结果
result = np.array([ 0, 1, 2, 3, 4, 4, 3])
提前谢谢。我想我明白了。使用@Paul Panzer的答案,我在列表中做了一个for循环
def toggle(ArrayOne,ArrayTwo):
a = 0
sum = -1
linels = []
for i in range(len(ArrayOne)):
sum += 1
a = sum - np.searchsorted(ArrayTwo, ArrayOne[i])
linels.append(a)
return np.array(linels)
我得到了结果
linels = np.array([ 0, 1, 2, 3, 4, 4, 3])
基本上,在索引i,你有这个值
value = i -count(how often element i in array one was bigger than array two until index i)
因为我在手机上使用了该死的自动更正功能,所以我将这两个数组重命名为a和b
def get_value(a, b, i):
max_value = a[i]
nb_smaller_elements = sum(1 for el in range(i) if b[el] < max_value)
return i - nb_smaller_elements
def get_值(a、b、i):
最大值=a[i]
nb_较小的元素=总和(如果b[el]<最大值,则范围(i)中的el为1)
返回i-nb_较小的元素
ArrayOne和ArrayTwo在您的示例中有不同的大小。这很难理解。我仍然不清楚如何得到数组结果中的值。要回答这个问题,感谢您指出数组的大小不同(它是固定的)。我尽了最大的努力来表达这个问题,也许我可以在早上更好地表达出来。如果你的数组被排序,比如np.arange(ArrayOne.size)-ArrayTwo.searchsorted(ArrayOne)
?那么sum(b[el]