我有两个数组,比如
[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])
有人可以帮我吗?
答案 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]