gpt4 book ai didi

python - 在 Python 中处理矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:32 24 4
gpt4 key购买 nike

我是 python 的新手,在处理矩阵时遇到了问题。

假设我有一个矩阵

A = [1 0 0 2; 3 3 3 2; 3 3 0 2; 3 4 4 4]

现在,我想让矩阵中的所有元素都为零,但在矩阵中重复次数达到最大次数的元素除外。 (在本例中为 3)。

所以预期的结果是,

B = [0 0 0 0; 3 3 3 0; 3 3 0 0;3 0 0 0]

如果有人可以帮助我编写 python 代码,那将非常有帮助。

最佳答案

使用 Scipy's mode 获取整个数组中出现次数最多的数字axis 设置为 None。将该数字与输入数组进行比较,为我们提供一个掩码,该掩码可用于通过与输入数组/最常出现的数字进行元素乘法或使用 np.where 来将其余部分设置为零选择。

因此,一种方法是 -

from scipy.stats import mode

most_occ_num = mode(A, axis=None)[0][0]
out = most_occ_num*(A==most_occ_num)

np.where用于数组输出 -

out = np.where(A==most_occ_num,A,0)

sample 运行-

In [129]: A = np.matrix([[1, 0 ,0 ,2],[ 3, 3, 3, 2],[ 3 ,3 ,0 ,2],[ 3 ,4 ,4 ,4]])
In [140]: A
Out[140]:
matrix([[1, 0, 0, 2],
[3, 3, 3, 2],
[3, 3, 0, 2],
[3, 4, 4, 4]])

In [141]: most_occ_num = mode(A, axis=None)[0][0]

In [142]: most_occ_num*(A==most_occ_num)
Out[142]:
matrix([[0, 0, 0, 0],
[3, 3, 3, 0],
[3, 3, 0, 0],
[3, 0, 0, 0]])

In [143]: np.where(A==most_occ_num,A,0)
Out[143]:
array([[0, 0, 0, 0],
[3, 3, 3, 0],
[3, 3, 0, 0],
[3, 0, 0, 0]])

关于python - 在 Python 中处理矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44493010/

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