循环访问numpy的矩阵列
我有以下numpy的矩阵:循环访问numpy的矩阵列
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
我想单独计算非零值平均每行和列的。所以,我的结果应该是这样的:
average_rows = [1.0,7.0,2.0,5.0,0.0,4.0,0.0,5.5,4.75,1.0,0.0]
average_cols = [3.5,1.0,4.33333,0.0,4.33333,0.0,4.0,6.0,6.5,0.0]
我无法弄清楚如何在它们迭代,我不断收到TypeError: unhashable type
而且,我不知道,如果迭代是最好的解决办法,我也尝试了类似R[:,i]
来抓取每一列,并使用sum(R[:,i])
对它进行求和,但仍然得到相同的错误。
最好用2d np.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. ])
这是一个很大的矩阵(9,000 x 15,000)。我不知道如何将其更改为np.array。 – BKS
只需将它提供给'np.array':'np.array(np.matrix([[1,2,3],[4,5,6]]))''。 'np.array'完全可以与大型二维数组一起工作。 –
为什么'np.matrix'存在的唯一原因是它带有'*'运算符的行为:它为'np.matrix'做了矩阵乘法而不是elementwise。但是现在我们有'@'来做矩阵乘法,所以我们根本不需要'np.matrix'。 –
你是怎么得到这个整洁的表格显示?这是不正常的'numpy'。行和列标签看起来像'pandas' ,. “矩阵”是什么意思? – hpaulj
这是numpy。我从'R = np.zeros((Rrows,Rcols))'开始,然后迭代并填充非零值,它大多是一个稀疏矩阵。它可以很好地显示,因为我使用ipython笔记本。 – BKS
好的,我使用Ipython,但不是笔记本。但如果这是''R'我看不到'不可能'的错误来自哪里。报告错误时,您应该至少显示部分错误堆栈和生成它的代码行。 – hpaulj