如果我有两个大小相同的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中的元素[5]大于ArrayTwo中的元素[0],因此直到ArrayTwo等中的元素[1]为止,共有四个元素。 给出结果
result = np.array([ 0, 1, 2, 3, 4, 4, 3])
谢谢。
答案 0 :(得分:0)
基本上,在索引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
答案 1 :(得分:-1)
我想我明白了。使用@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])