Python矩阵,有解决方案吗?
我的输入仅举个例子:Python矩阵,有解决方案吗?,python,matrix,numpy,sum,Python,Matrix,Numpy,Sum,我的输入仅举个例子: from numpy import * x=[['1' '7'] ['1.5' '8'] ['2' '5.5'] ['2' '9']] 我想在随机矩阵上做下一件事: 一,。每行计算: 这对于numpy很简单,因为转置就是x.T,如果x=[1,7] 这必须为矩阵上的每一行计算 二,。现在我想用这种方式求和 结果就是这个矩阵 有什么想法吗 编辑2: 我收到错误: 列表索引必须是整数,而不是 元组 但是如果x是x=numpy.array[[1,7],[1.5,8],[
from numpy import *
x=[['1' '7']
['1.5' '8']
['2' '5.5']
['2' '9']]
我想在随机矩阵上做下一件事:
一,。每行计算:
这对于numpy很简单,因为转置就是x.T,如果x=[1,7]
这必须为矩阵上的每一行计算
二,。现在我想用这种方式求和
结果就是这个矩阵
有什么想法吗
编辑2:
我收到错误:
列表索引必须是整数,而不是
元组
但是如果x是x=numpy.array[[1,7],[1.5,8],[2,5.5],[2,9]],那么这没关系,但我没有这样的输入。下面的情况如何:
In [1]: import numpy as np
In [2]: x=np.array([[1, 7],[1.5, 8],[2, 5.5],[2, 9]])
In [3]: np.sum(np.outer(row,row) for row in x)
Out[3]:
array([[ 11.25, 48. ],
[ 48. , 224.25]])
首先,应创建包含浮点数而不是字符串的矩阵:
x = numpy.array([[1, 7], [1.5, 8], [2, 5.5], [2, 9]])
接下来,您可以使用NumPy构建产品矩阵:
y = x[:, :, None] * x[:, None]
print y.sum(axis=0)
最后,对所有矩阵求和:
y = x[:, :, None] * x[:, None]
print y.sum(axis=0)
印刷品
[[ 11.25 48. ]
[ 48. 224.25]]
请注意,此解决方案避免了任何Python循环。只需添加矩阵即可?是否确实希望x是字符串数组?嗯,这对我来说非常合适;但我的输入是:x=['1''7']['1.5''8']['2''5.5']['2''9']]如何实现您的代码?我尝试使用数组,但没有成功…@thaking:为什么你的矩阵包含字符串?通常,您应该以一种从一开始就有一个浮点数矩阵的方式初始化它。如果由于任何原因这是不可能的,可以使用x=x.astypefloat转换矩阵。请注意,我无法想象为什么有必要这样做。请看我的编辑2,其中我描述了我的输入数据问题…以及为什么我无法获得矩阵。。thanks@thaking这似乎是一个毫不相干的问题。你可能想问一个新问题。确保在新问题中解释原始输入的来源。@thaking:正如我在帖子中所说的,你应该将矩阵初始化为一个浮点数组,而不是像在编辑中那样,初始化为字符串列表。NumPy数组和Python列表是非常不同的数据类型,您尝试对它们使用相同的代码。
[[ 11.25 48. ]
[ 48. 224.25]]