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

この形式の配列を使用している場合[[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]]
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]

また、マトリックス製品をやろうとしているようです。を使用して、1 行のコードで同じことを行うことができますnp.dot

new = np.dot(A, B)
于 2012-10-22T17:58:50.680 に答える
1

リストであることBがわかります。としてインデックスを作成することはできませんB[:,i]-- これは暗黙的に as に渡され__getitem__ます(slice(None,None,None),i)-- つまり、タプルです。

B最初に numpy 配列に変換し ( B = np.array(B))、そこから移動できます ...

于 2012-10-22T17:59:35.077 に答える