そのため、関数numpy.ma.where
と同じように、を使用して配列を作成しようとしています。numpy.where
関数はwhere
列配列をブロードキャストし、一部の要素をゼロに置き換えます。私は以下を取得します:
>>> import numpy
>>> condition = numpy.array([True,False, True, True, False, True]).reshape((3,2))
>>> print (condition)
[[ True False]
[ True True]
[False True]]
>>> broadcast_column = numpy.array([1,2,3]).reshape((-1,1)) # Column to be broadcast
>>> print (broadcast_column)
[[1]
[2]
[3]]
>>> numpy.where(condition, broadcast_column, 0) \
... # Yields the expected output, column is broadcast then condition applied
array([[1, 0],
[2, 2],
[0, 3]])
>>> numpy.ma.where(condition, broadcast_column, 0).data \
... # using the ma.where function yields a *different* array! Why?
array([[1, 0],
[3, 1],
[0, 3]], dtype=int32)
>>> numpy.ma.where(condition, broadcast_column.repeat(2,axis=1), 0).data \
... # The problem doesn't occur if broadcasting isnt used
array([[1, 0],
[2, 2],
[0, 3]], dtype=int32)
助けてくれて本当にありがとうございます!
私のnumpyバージョンは1.6.2です