如何使用 NumPy 根据值在矩阵中的出现情况来组织值?

问题描述 投票:0回答:1

我正在做一个练习,我需要根据 3x3 矩阵中的出现次数将 0 到 5 的值组织到一个数组中。我正在使用 NumPy 来完成此任务。

给定以下 3x3 矩阵:

[[1 1 3]
 [4 5 2]
 [3 0 0]]

我想输出一个数组,其中每个元素代表从0到5的每个值出现的次数。对于上面的矩阵,所需的输出是:

[2,2,1,2,1,1]

我尝试过使用 np.array() 和 np.asarray(),并且考虑过使用 flatten() 函数,但它并没有帮助我实现目标。这是我尝试过的:

import numpy as np

m = np.matrix([[1,1,3], [4,5,2], [3,0,0]]) # Primary matrix, used for obtaining the values
print("Original Matrix: ") # Print original matrix
print(m)

print("Occurrences: ")
for i in range(6):
  occur = (np.count_nonzero(m == i)) # Count the number of elements satisfying the condition
  print(i, ":", occur)

尽管如此,我的输出是:

Occurrences:
0 : 2
1 : 2
2 : 1
3 : 2
4 : 1
5 : 1

如何使用 NumPy 有效地将这些计数组织到所需的输出数组中?

python numpy
1个回答
1
投票

我认为可以这样做:

# declare matrix:
mat = np.matrix([[1, 1, 3], 
 [4, 5, 2],
 [3, 0, 0]])

# get flattened array:
arr = mat.getA1()

# get the bincounts:
bc = np.bincount(arr)

这会给你同样的结果

enter image description here

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.