1
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])

If I'm using this form of array [[0, 0, 0], [0, 1, 0], [0, 2, 1]] in B it is giving me an error

TypeError: list indices must be integers, not tuple

but if I'm using same array B, in place of A, it's working well.

I am getting this type of return array

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

so i want to convert it into this form

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

2 回答 2

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)
于 2012-10-22T17:58:50.680 回答
1

看起来这B是一个列表。您不能将其索引为B[:,i]- 隐含传递给__getitem__as (slice(None,None,None),i)- 即元组。

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

于 2012-10-22T17:59:35.077 回答