Python 在numpy矩阵列上迭代
我有以下numpy矩阵:Python 在numpy矩阵列上迭代,python,numpy,matrix,Python,Numpy,Matrix,我有以下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 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:unhabable type
另外,我不确定迭代是否是最好的解决方案,我还尝试了类似于
R[:,I]
的方法来获取每一列,并使用sum(R[:,I])
对其求和,但不断得到相同的错误。最好使用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. ])
这是一个大矩阵,我有(9000 x 15000)。我不知道如何将其更改为np.array。只需将其馈送到
np.array
:np.array(np.matrix([[1,2,3],[4,5,6]])
np.array
完全可以处理大型2d数组。np.matrix
存在的唯一原因是它与*
运算符的行为:它对np.matrix
执行矩阵乘法而不是元素乘法。但是现在我们有@
来做矩阵乘法,所以我们根本不需要np.matrix
。谢谢!它主要起作用,但倾向于将nan放在列/行中,其中都是零而不是零。您可以使用np.nan\u to_num()
来消除这些nan。(然而,严格地说,这是一种正确的行为:空数字集的平均值是一种nan,而不是零:))你是如何得到这种整洁的表格显示的?这不是正常的numpy
。有了行和列标签,它看起来像熊猫,。你所说的矩阵是什么意思?它是numpy。我从R=np.zero((Rrows,Rcols))
开始,然后迭代并填充非零值,它主要是一个稀疏矩阵。它可以很好地显示,因为我使用ipython笔记本。好的,我使用所有的ipython,但不是笔记本。但是如果那是``R`,我看不出不可损坏的
错误来自哪里。报告错误时,应至少显示错误堆栈的一部分以及产生错误堆栈的代码行。您可以尝试使用sum
对行进行迭代。