gpt4 book ai didi

python - 计算 numpy 二维数组中的出现次数

转载 作者:行者123 更新时间:2023-12-04 15:16:00 25 4
gpt4 key购买 nike

我有一个 2D numpy 数组,如下所示:

import numpy as np

a=np.array([[1,2],[1,1], [2,1],[2,2],[3,2],[3,2], [3,1], [4,2],[4,1]])
print(a)

我需要计算第 1 列中的每个值在第 2 列中出现了多少个值 1 或 2。例如,当第 1 列中的 x=3 时,第 2 列中有两个值 2 的实例和一个值 1 的实例。

任何有关如何完成此操作的指导都将不胜感激!我想我可以用 np.unique 做一些 for 循环,但我不确定......

最佳答案

在您的评论中,如果您想要列表格式,请尝试以下操作:

out = [[k, *np.unique(a[a[:,0] == k,1], return_counts=True)[1]] 
for k in np.unique(a[:,0])]

Out[838]: [[1, 1, 1], [2, 1, 1], [3, 1, 2], [4, 1, 1]]

对于二维数组

out = np.array([[k, *np.unique(a[a[:,0] == k,1], return_counts=True)[1]] 
for k in np.unique(a[:,0])])

Out[850]:
array([[1, 1, 1],
[2, 1, 1],
[3, 1, 2],
[4, 1, 1]], dtype=int64)

一种简单的方法是将字典理解与 collections.Counternp.unique 结合使用

from collections import Counter

out = {k: Counter(a[a[:,0] == k,1]) for k in np.unique(a[:,0])}

Out[821]:
{1: Counter({2: 1, 1: 1}),
2: Counter({1: 1, 2: 1}),
3: Counter({2: 2, 1: 1}),
4: Counter({2: 1, 1: 1})}

关于python - 计算 numpy 二维数组中的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64316545/

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