Numpy导入为np
:
np.array([True, 1, 2]) + np.array([3, 4, False])
结果是:
array([4, 5, 2])
在此示例中,boolean
已更改为int
。我认为这是因为操作。
np.array([True,1,2])
结果是:
array(1,1,2)
使用string
似乎优先考虑并将int
更改为string
。
np.array(["True", 1, 2])
结果
array(['True', '1', '2'], dtype='<U4')
in [4]: np.array([0, 1, 2, 3, 'a', True])
Out[4]:
array(['0', '1', '2', '3', 'a', 'True'], dtype='<U21')`
现在似乎string
具有最高优先级,而不是特定类型的对象数。为什么返回dtype='<U4'/'U1'
?
这究竟是如何运作的?
我是否可以使用此属性将非零整数更改为True
并将零更改为False
或者我必须使用比较运算符?
答案 0 :(得分:0)
答案部分包含在您的问题中。 Boolean
类型具有隐式转换为其他数字类型,因为它只是0或1,允许例如带掩码的算术运算。数字也可以轻松转换为字符,为您提供字符串。但另一方面,将str
值分配给int
并不能直接开箱即用。这就是为什么当您向数组添加字符串时,它会立即推广到str
类型。当使用dtype
时,它返回U#,其中#由字符串数组的长度决定,据我所知,请参阅官方文档here。
从数字数组到bool的转换完全按照您的指定工作,如果元素非零,则返回True
,否则为False
。例如:
a=np.array([0.0,1.5,0,1e8,-3])
for b in a:
if b: print ("hi there")
else: print ("go away!")
有效a
值被视为[False,True,False,True,True]