次のコードを考えると、最後の2行は同じように動作すると思いますが、そうではありません。
import numpy as np
C = np.matrix(np.zeros((4,4)))
C[0, 0:2] = np.matrix([[1, 2]]) # Works as expected.
C[0, [0,1]] = np.matrix([[1, 2]]) # Throws an "array is not broadcastable to correct shape" error.
代わりに使用するndarray
と、期待どおりに機能します(割り当ての右側を1次元に調整しますndarray
)。
D = np.zeros((4,4))
D[0, 0:2] = np.array([1, 2]) # Works as expected.
D[0, [0,1]] = np.array([1, 2]) # Works too.
さらに奇妙なことに、マトリックスにインデックスを付けるのではなく、マトリックスにインデックスを付けるだけの場合はC
、スライスインデックスを使用するか、リストが同じものを返すように見えます。
C[0, 0:2] # => matrix([[ 1., 2.]])
C[0, [0, 1]] # => matrix([[ 1., 2.]])
問題は、割り当てにおける2つのアプローチの動作が異なるのはなぜですか?私は何が欠けていますか?
(編集:タイプミス)