Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy—计算值的数目,直到满足条件为止_Python_Arrays_Numpy - Fatal编程技术网

Python 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

如果我有两个相同大小的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不满足要求。在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]