您仍然可以使用
bincount()。关键是要转换
a和
b成扁平状索引的单一一维数组。
如果矩阵是
nX
m,你可以申请
bincount()到
a * m + b,构建从结果矩阵。
以您的问题为例:
In [15]: a = np.array([1, 2, 1, 1, 2])In [16]: b = np.array([2, 1, 1, 1, 1])In [17]: cnt = np.bincount(a * 3 + b)In [18]: cnt.resize((3, 3))In [19]: cntOut[19]: array([[0, 0, 0], [0, 2, 1], [0, 2, 0]])
如果数组的形状更复杂,则可能更容易使用
np.ravel_multi_index()而不是手工计算平面索引:
In [20]: cnt = np.bincount(np.ravel_multi_index(np.vstack((a, b)), (3, 3)))In [21]: np.resize(cnt, (3, 3))Out[21]: array([[0, 0, 0], [0, 2, 1], [0, 2, 0]])
(帽子提示@Jaime指出
ravel_multi_index。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)