迭代numpy矩阵列

2024-04-20 14:06:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的数字矩阵:

        0      1      2      3      4      5      6      7      8      9      
0       0.0    1.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0   
1       0.0    0.0    5.0    0.0    9.0    0.0    0.0    0.0    0.0    0.0   
2       0.0    0.0    0.0    0.0    0.0    0.0    2.0    0.0    0.0    0.0   
3       0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    5.0    0.0   
4       0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0   
5       0.0    0.0    7.0    0.0    1.0    0.0    0.0    0.0    0.0    0.0   
6       0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0   
7       5.0    0.0    0.0    0.0    0.0    0.0    0.0    6.0    0.0    0.0   
8       2.0    0.0    0.0    0.0    3.0    0.0    6.0    0.0    8.0    0.0   
9       0.0    0.0    1.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0   
10      0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0   

我想分别计算每行和每列的非零值平均值。所以我的结果应该是这样的:

^{pr2}$

我不知道如何迭代它们,我一直得到TypeError: unhashable type

另外,我不确定迭代是否是最好的解决方案,我还尝试了类似R[:,i]的方法来获取每个列并使用sum(R[:,i])对其求和,但是仍然得到相同的错误。在


Tags: 方法type错误矩阵数字解决方案平均值sum
1条回答
网友
1楼 · 发布于 2024-04-20 14:06:52

最好用2dnp.array代替矩阵。在

import numpy as np
data = np.array([[1, 2, 0], [0, 0, 1], [0, 2, 4]], dtype='float')
data[data == 0] = np.nan
# replace all zeroes with `nan`'s to skip them
# [[  1.   2.  nan]
# [ nan  nan   1.]
# [ nan   2.   4.]]
np.nanmean(data, axis=0)
# array([ 1. ,  2. ,  2.5])
np.nanmean(data, axis=1)
# array([ 1.5,  1. ,  3. ])

相关问题 更多 >