如何将元组列表转换为数组

时间:2012-10-22 17:56:05

标签: python numpy

new = zero(rows_A,cols_B)
for i in range(rows_A):
    for j in range(cols_B):     
        new[i][j] += np.sum(A[i] * B[:,j])

如果我在[[0, 0, 0], [0, 1, 0], [0, 2, 1]]中使用这种形式的数组B 它给了我一个错误

TypeError: list indices must be integers, not tuple

但是,如果我使用相同的数组B,而不是A,那么它运作良好。

我得到这种类型的返回数组

[[0, 0, 0], [0, 1, 0], [0, 2, 1]]

所以我想把它转换成这种形式

[[0 0 0]
[0 1 0]
[0 2 1]]

2 个答案:

答案 0 :(得分:2)

numpy.asarray会这样做。

import numpy as np

B = np.asarray([[0, 0, 0], [0, 1, 0], [0, 2, 1]])

这会产生

array([[0, 0, 0],
       [0, 1, 0],
       [0, 2, 1]])

可以使用[:, j]索引。

此外,您似乎正在尝试制作矩阵产品。您可以使用np.dot只使用一行代码执行相同的操作:

new = np.dot(A, B)

答案 1 :(得分:1)

B似乎是一个列表。您无法将其编入B[:,i] - 将其作为__getitem__无效地传递给(slice(None,None,None),i) - 即元组。

您可以先将B转换为numpy数组(B = np.array(B)),然后再从那里开始......