Numba: как я могу считать вхождения в цикле numba - PullRequest
0 голосов
/ 07 апреля 2020

Я бы хотел посчитать вхождения "1" в нарезанный массив "col3".

"y = (arr [row-x: row2]). Sum ()" - это всего лишь пример выполнения кодов! Здесь я получаю что-то вроде:

"y = (arr [row-x: row, 2]). Count (1)" для подсчета массива динамических c строки 2, как часто "1" произошло.

#Stackoverflow example
from numba import njit
import pandas as pd
d = {'col1': [20, 23, 25, 44, 46, 47, 48, 49, 50, 50, 52, 55, 56, 69, 70],
'col2': [39, 32, 42, 50, 63, 67, 64, 68, 68, 74, 59, 75, 58, 71, 66],
'col3': [1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1]}   
df = pd.DataFrame(data=d)
df["overlap_count"] = 0  #create new column
df["count"] = 0  #create new column
n = 3 #if x >= n, then value = 0
n1 = 2

a = df[['col1','col2','col3','overlap_count', 'count']].values

@njit
def custom_sum(arr, n):
    for row in range(arr.shape[0]):
        x = (arr[0:row, 1] > arr[row, 0]).sum()
        y = (arr[row-x:row, 2]).sum()
        #y = (arr[row-x:row, 2]).count(1) #this is what I tried!
        arr[row, 3] = x+1
        arr[row, 4] = y+1
        if x >= n:
            arr[row, 1] = 0
            arr[row, 3] = 0
        if y >= n1:
            arr[row, 4] = 0

    return arr
df1 = pd.DataFrame(custom_sum(a, n), columns=df.columns)
print (df1)

Я получаю в столбце «count», например в столбце «count»

строка 0 = 1, строка 1 = 2, строка 2 = 0 (поскольку более 2 (n1) случаев)

...