计算 numpy 数组中每个元素的出现次数,其中元素在元素上与另一个数组相等?

时间:2021-04-05 18:21:51

标签: python arrays numpy count

我有两个数组,比如 [2,2,0,1,1,1,2][2,2,0,1,1,1,0] 我需要计算(例如使用 bincount)第一个数组中每个元素的出现次数,其中元素在第二个数组中的位置相等。 所以在这种情况下,我们得到 [1,3,2],因为 0 在数组的相同位置出现一次,1 在相同位置出现 3 次,2 在相同位置出现两次。 我试过这个,但不是想要的结果: np.bincount(a[a==b]) 有人可以帮我吗?

3 个答案:

答案 0 :(得分:0)

from datatable import dt, f, by

df = dt.Frame(
    col1=[2, 2, 0, 1, 1, 1, 2],
    col2=[2, 2, 0, 1, 1, 1, 0]
)

df['equal'] = dt.ifelse(f.col1 == f.col2, 1, 0)

df_sub = df[:, {"sum": dt.sum(f.equal)}, by('col1')]

yourlist = df_sub['sum'].to_list()[0]

yourlist

[1, 3, 2]

答案 1 :(得分:0)

array_1 = np.array([2,2,0,1,1,1,2])
array_2 = np.array([2,2,0,1,1,1,0])

# set up a bins array for the results:
if array_1.max() > array_2.max():
    bins = np.zeros(array_1.max()+1)
else:
    bins = np.zeros(array_2.max()+1)

# fill the bin values:
for val1, val2 in zip(array_1, array_2):
    if val1 == val2:
        bins[val1] += 1

# convert bins to a list with int values
bins = bins.astype(int).tolist()


结果:


[1, 3, 2]

答案 2 :(得分:0)

您必须将列表放入 np 数组格式:

import numpy as np

a = np.array([2,2,0,1,1,1,2])
b = np.array([2,2,0,1,1,1,0])

np.bincount(a, weights=(a==b)) # [1, 3, 2]
相关问题