gpt4 book ai didi

python - 从一个 numpy 数组中获取另一个数组中值的频率

转载 作者:行者123 更新时间:2023-11-28 20:58:59 27 4
gpt4 key购买 nike

我有两个 numpy 数组,例如:

import numpy as np
a1 = np.linspace(0,2*np.pi,101)
a2 = np.random.choice(a1, 60)

我需要计算 a1 中的每个值在 a2 中出现了多少次。我可以用循环来完成,但我希望有更好的解决方案。

循环解决方案:

a3 = np.zeros_like(a1)
for i in range(len(a1)):
a3[i] = np.sum(a2==a1[i])

最佳答案

另一种np.unique方法:

>>> import numpy as np
>>> a1 = np.linspace(0,2*np.pi,101)
>>> a2 = np.random.choice(a1, 60)
>>>
>>> unq, idx, cnts = np.unique(np.concatenate([a1, a2]), return_inverse=True, return_counts=True)
>>> assert np.all(unq[idx[:len(a1)]] == a1)
>>> result = cnts[idx[:len(a1)]] - 1
>>> result
array([0, 0, 2, 0, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
0, 1, 0, 0, 0, 1, 1, 1, 2, 0, 0, 1, 2, 1, 0, 2, 0, 0, 0, 1, 0, 2,
0, 1, 2, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, 1, 1, 0, 0,
2, 0, 0, 1, 0, 0, 2, 0, 3, 0, 0, 0, 1, 1, 2, 0, 0, 0, 1, 1, 1, 1,
0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 2, 1])

关于python - 从一个 numpy 数组中获取另一个数组中值的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50655906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com