np.ndarray bitwise_or ndarrays 运算符失败
np.ndarray bitwise_or operator on ndarrays fails
我想初始化一个只能包含 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])
它确实有效。
默认情况下,np.zeros
将使用 float 数据类型,您不能对 float 执行按位运算。 np.bitwise_or([0,0,0,0], [0,0,0,0])
作用于整数,这就是它起作用的原因。
如果你在构造 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)
我想初始化一个只能包含 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])
它确实有效。
默认情况下,np.zeros
将使用 float 数据类型,您不能对 float 执行按位运算。 np.bitwise_or([0,0,0,0], [0,0,0,0])
作用于整数,这就是它起作用的原因。
如果你在构造 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)