python - 将值转换为 NumPy 数组中的行索引

标签 python arrays numpy

我有一个数组,其中第一行是一个类别,第二行是一个子类别,第三行是我想要压缩的值。

我正在尝试重新排列数组 A

[[ 4  4 19 19 20 21 25 26 26 27 27 29]  # category
 [ 1  2  1  2  1  2  1  1  2  1  2  2]  # subcategory
 [ 1  1  3  3  1  2  1  1  1  2  2  2]] # count

进入数组B

[[ 4 19 20 21 25 26 27 29]  # category
 [ 1  3  1  0  1  1  2  0]  # subcategory 1 count
 [ 1  3  0  2  0  1  2  2]] # subcategory 2 count

我已经做到了

categories, subcategories = np.unique(A[0], return_counts=True)
B = np.zeros((np.amax(subcategories) + 1, A[0].size))
B[0] = categories

但不确定如何填充其余部分。有什么想法吗?

最佳答案

这应该可以解决问题:

cat_index = np.searchsorted(categories, A[0])
B[A[1], cat_index] = A[2]

关于python - 将值转换为 NumPy 数组中的行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27156758/

相关文章:

python - [ :-1] mean/do in python? 是什么意思

python - 将 Python “requests” 与现有套接字连接一起使用

python - 将 "scripts"作为 Python 包的一部分安装在 setup.py 中,位于用户路径上并被识别为 Python 脚本

c - 如何在 C 的二维字符数组中填充字符串?

javascript - 尝试将此 html 发送到本地存储中,以便我可以在新的购物车页面中使用,但它一直给我一个错误

python - Numpy ValueError 将元组列表广播到数组中

python - 根据一列中的公共(public)值从两个或多个 2d numpy 数组创建交集

Python 操作系统错误 : [Errno 98] Address already in use but no port is used

arrays - 需要多少次交换才能使数组 a 和 b 之和的差最小?

python - 从头开始Python中的K表示