给定另一个数组计算一个数组元素的出现次数
Counting occurrences of elements of one array given another array
我想在给定另一个数组 (arr2) 的情况下找到一个数组 (arr1) 的值的频率。都是一维的,arr2是有序的,没有重复元素
示例:
arr1 = np.array([1, 0, 3, 0, 3, 0, 3, 0, 8, 0, 1, 8, 0])
arr2 = np.array([0, 1, 2, 8])
输出应该是:freq= np.array([6, 2, 0, 2)]
我正在尝试的是:
arr2, freq = np.unique(arr1, return_counts=True)
但此方法不输出频率为 0 的值。
一种方法如下:
import numpy as np
arr1 = np.array([1, 0, 3, 0, 3, 0, 3, 0, 8, 0, 1, 8, 0])
arr2 = np.array([0, 1, 2, 8])
arr3, freq = np.unique(arr1, return_counts=True)
dict_ = dict(zip(arr3, freq))
freq = np.array([dict_[i] if i in dict_ else 0 for i in arr2])
freq
输出:
[6, 2, 0, 2]
替代单线解决方案
import numpy as np
arr1 = np.array([1, 0, 3, 0, 3, 0, 3, 0, 8, 0, 1, 8, 0])
arr2 = np.array([0, 1, 2, 8])
freq = np.array([np.count_nonzero(arr1 == i) for i in arr2])
我想在给定另一个数组 (arr2) 的情况下找到一个数组 (arr1) 的值的频率。都是一维的,arr2是有序的,没有重复元素
示例:
arr1 = np.array([1, 0, 3, 0, 3, 0, 3, 0, 8, 0, 1, 8, 0])
arr2 = np.array([0, 1, 2, 8])
输出应该是:freq= np.array([6, 2, 0, 2)]
我正在尝试的是:
arr2, freq = np.unique(arr1, return_counts=True)
但此方法不输出频率为 0 的值。
一种方法如下:
import numpy as np
arr1 = np.array([1, 0, 3, 0, 3, 0, 3, 0, 8, 0, 1, 8, 0])
arr2 = np.array([0, 1, 2, 8])
arr3, freq = np.unique(arr1, return_counts=True)
dict_ = dict(zip(arr3, freq))
freq = np.array([dict_[i] if i in dict_ else 0 for i in arr2])
freq
输出:
[6, 2, 0, 2]
替代单线解决方案
import numpy as np
arr1 = np.array([1, 0, 3, 0, 3, 0, 3, 0, 8, 0, 1, 8, 0])
arr2 = np.array([0, 1, 2, 8])
freq = np.array([np.count_nonzero(arr1 == i) for i in arr2])