2011-04-29 89 views
0

这是从这个线程继续说道:Python matrix, any solution?Python的矩阵问题


输入

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) 

我收到的错误:

"list indices must be integers, not tuple"

但如果x是 x = numpy.array([[1, 7], [1.5, 8], [2, 5.5], [2, 9]])那么它的好,但我没有这样输入

+2

解释比numpy的阵列不同。如果你想使用numpy操作,你需要首先将你的列表转换为数组。 – recursive 2011-04-29 20:06:36

+0

我该怎么做?我尝试了很多东西,但在输入中没有成功 – thaking 2011-04-29 20:07:47

+0

,您在每行之后都省略了逗号。 – kefeizhou 2011-04-29 20:10:52

回答

1

转换x到数字的numpy的数组:

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

这不会解决我的问题;我的问题是我有 [['1','7'] ...]而不是[[1,7] ...] – thaking 2011-04-29 20:21:10

+0

@thaking:对,修正它。有趣的是,没有人发现:) – 2011-04-29 20:27:21

+0

地图更好,不是吗? – Ant 2011-04-30 12:29:13

2
内部列表之间

你缺少逗号:

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

错误消息在Python朵朵看到['1','7']['1.5','8']并尝试使用元组('1.5','8')的一个索引列表['1','7']

+0

嗯,我知道,但我的输入是大得多,它是随机的,C不能在元素之间添加逗号!这个元素是我的例子... – thaking 2011-04-29 20:12:26

+0

这不会解决我的问题;我的问题是我有 [['1','7'] ...]而不是[[1,7] ...] – thaking 2011-04-29 20:21:52

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']] 

当我不这样做,我得到了你错误,但通过这样做,我避免了错误。

+0

我知道,但我的输入是大得多,是随机的,我无法在元素之间添加逗号!这个元素是我的例子... – thaking 2011-04-29 20:11:59

+0

为什么你不能添加逗号?也许你的问题是你不能添加逗号,而不是你需要这个没有逗号。 – recursive 2011-04-29 20:16:35

+0

我的问题是我有 [['1','7'] ...]而不是[[1,7] ...] – thaking 2011-04-29 20:23:06