ban*_*ing 2 python numpy matplotlib matrix
嗨,我有以下矩阵
[[ 47 43 51 81 54 81 52 54 31 46]
[ 35 21 30 16 37 11 35 30 39 37]
[ 8 17 11 2 5 4 11 9 17 10]
[ 5 9 4 0 1 1 0 3 9 3]
[ 2 7 2 0 0 0 0 1 2 1]
[215 149 299 199 159 325 179 249 249 199]
[ 27 49 24 4 21 8 35 15 45 25]
[100 100 100 100 100 100 100 100 100 100]]
Run Code Online (Sandbox Code Playgroud)
我需要迭代矩阵求和行0,1,2,3,4中的所有元素,只有例子:我需要
row_0_sum = 47+43+51+81....46
Run Code Online (Sandbox Code Playgroud)
此外,我需要将每个行sum存储在这样的数组中
[row0_sum, row1_sum, row2_sum, row3_sum, row4_sum]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试过这段代码,但它没有完成这项工作:
mu = np.zeros(shape=(1,6))
#get an average
def standardize_ratings(matrix):
sum = 0
for i, eli in enumerate(matrix):
for j, elj in enumerate(eli):
if(i<5):
sum = sum + matrix[i][j]
if(j==elj.len -1):
mu[i] = sum
sum = 0
print "mu[i]="
print mu[i]
Run Code Online (Sandbox Code Playgroud)
这只是给了我一个Error: numpy.int32 object has no attribute 'len'
所以有人可以帮助我.什么是最好的方法,我应该使用哪种类型的数组来存储它.我是Python新手,但已完成编程....
Thannks
制作您的数据,matrix一个numpy.ndarray对象,而不是一个列表列表,然后就这样做matrix.sum(axis=1).
>>> matrix = np.asarray([[ 47, 43, 51, 81, 54, 81, 52, 54, 31, 46],
[ 35, 21, 30, 16, 37, 11, 35, 30, 39, 37],
[ 8, 17, 11, 2, 5, 4, 11, 9, 17, 10],
[ 5, 9, 4, 0, 1, 1, 0, 3, 9, 3],
[ 2, 7, 2, 0, 0, 0, 0, 1, 2, 1],
[215, 149, 299, 199, 159, 325, 179, 249, 249, 199],
[ 27, 49, 24, 4, 21, 8, 35, 15, 45, 25],
[100, 100, 100, 100, 100, 100, 100, 100, 100, 100]])
>>> print matrix.sum(axis=1)
[ 540 291 94 35 15 2222 253 1000]
Run Code Online (Sandbox Code Playgroud)
要从结果中获取前五行,您可以执行以下操作:
>>> row_sums = matrix.sum(axis=1)
>>> rows_0_through_4_sums = row_sums[:5]
>>> print rows_0_through_4_sums
[540 291 94 35 15]
Run Code Online (Sandbox Code Playgroud)
或者,您也可以仅选择那些开头的行,并仅将总和应用于它们:
>>> rows_0_through_4 = matrix[:5,:]
>>> print rows_0_through_4.sum(axis=1)
[540 291 94 35 15]
Run Code Online (Sandbox Code Playgroud)
一些有用的链接将是:
NumPy for Matlab用户,如果您熟悉Matlab/Octave中的这些内容
| 归档时间: |
|
| 查看次数: |
2386 次 |
| 最近记录: |