Python矩阵问题

时间:2011-04-29 20:03:28

标签: python matrix numpy

这是从这个帖子继续:Python matrix, any solution?


输入

from numpy import *
import numpy

x=[['1','7'],
 ['1.5', '8'],
 ['2', '5.5'],
 ['2','9']]

代码

y = x[:, :, None] * x[:, None]
print y.sum(axis=0)

我收到了错误:

  

“列表索引必须是整数,而不是   元组“

但如果x是  x = numpy.array([[1, 7], [1.5, 8], [2, 5.5], [2, 9]])然后没关系,但我没有这样的输入

3 个答案:

答案 0 :(得分:2)

您在内部列表中缺少逗号:

x = [['1',   '7'],
     ['1.5', '8'],
     ['2',   '5.5'],
     ['2',   '9']]

错误消息源于Python看到['1','7']['1.5','8']并尝试使用元组('1.5','8')作为列表['1','7']的索引。

答案 1 :(得分:2)

编辑:

我不是100%清楚你在这里要求/试图实现的目标。回复关于[['1','7'] ...的评论:目前你的列表中有字符串元素;你可以很容易地转换为数字元素:

xf = [[float(el) for el in m] for m in x]

原帖: 通过在列表元素之间添加逗号来定义列表:

x=[['1','7'],['1.5', '8'],['2', '5.5'],['2','9']]

当我没有这样做时,我收到了你的错误,但通过这样做,我避免了错误。

答案 2 :(得分:1)

x转换为数字的numpy数组:

x = numpy.asanyarray([[float(z) for z in y] for y in x])