我注意到在 NumPy 1.13.1 中,当打印dtype=np.bool_
数组时,True
值始终具有前导空格。
>>> import numpy as np
>>> np.asarray([1, 0, 1, 1, 0], dtype=np.bool_)
array([ True, False, True, True, False], dtype=bool)
>>> # ^ ^ ^
... # I would have expected: array([True, False, True, True, False], dtype=bool)
...
>>> str(np.asarray([0, 1, 1, 0], dtype=np.bool_))
'[False True True False]'
>>> # ^ ^
... # Again I would have expected: '[False True True False]'
...
>>> repr(np.asarray([1, 1, 1, 0, 0], dtype=np.bool_))
'array([ True, True, True, False, False], dtype=bool)'
>>> # ^ ^ ^
... # repr() does it too.
是否有任何特殊原因要格式化它?
答案 0 :(得分:1)
这适用于float和bool数组。
对于具有负值的浮点数组,额外的空间可确保对齐(这对于多维数组很有用),为负号留出空间。
missing_values()
对于具有多个值的bool数组,它可确保>>> np.array([-4, 1, 2, -3], dtype=np.float64).reshape(2, 2)
array([[-4., 1.],
[ 2., -3.]])
和True
之间的对齐,这些长度不同。
False
当不需要它时没有特别的原因(即所有正浮点值,单个元素bool数组),并且在这种情况下它可以在没有的情况下完成。
>>> np.array([0, 1, 1, 0], dtype=np.bool_).reshape(2, 2)
array([[False, True],
[ True, False]], dtype=bool)
GitHub上有一个open PR #9130可以在某些支持下不需要额外的间距时使这个打印间距更加一致,因此它可能会在即将推出的版本中发生变化。