0

ゼロまたは 1 のみを含むサイズ (n,m) の numpy 配列を初期化したいと考えています。さらに、後で np.bitwise_or に配列を付けたいと思います。

たとえば、試してみると:

import numpy as np
myArray = np.zeros([4,4])
myRow = myArray[1,]
myCol = myArray[,1]
np.bitwise_or(myRow, myCol)

失敗します:

TypeError: ufunc 'bitwise_or' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

同様の方法でエラーなしでこれを行うにはどうすればよいですか?

私が試してみると、

np.bitwise_or([0,0,0,0], [0,0,0,0])

それは実際に機能します。

4

1 に答える 1

6

デフォルトでnp.zerosは、float dtype を使用し、float に対してビット演算を実行することはできません。 np.bitwise_or([0,0,0,0], [0,0,0,0])整数に作用するため、機能します。

を構築するときに代わりに整数の dtype を渡すとmyArray、それも機能します。

In [9]: myArray = np.zeros([4,4], dtype=int)

In [10]: myRow = myArray[1,:]

In [11]: myCol = myArray[:,1]

In [12]: np.bitwise_or(myRow, myCol)
Out[12]: array([0, 0, 0, 0])

または、次のように呼び出すことができますastype(int)

In [14]: myArray = np.array([[1.0,0.0,1.0,0.0], [1.0,1.0,1.0,0.0]])

In [15]: np.bitwise_or(myArray[0].astype(int), myArray[1].astype(int))
Out[15]: array([1, 1, 1, 0])

とはいえ、配列が常に 0 または 1 のみを含むことがわかっている場合は、bool代わりに配列を検討する必要があります。

In [21]: myArray = myArray.astype(bool)

In [22]: np.bitwise_or(myArray[0], myArray[1])
Out[22]: array([ True,  True,  True, False], dtype=bool)
于 2016-11-18T01:52:20.953 に答える