为什么True在numpy数组中打印出前导空格

时间:2017-09-14 21:54:36

标签: python arrays numpy whitespace

我注意到在 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.

是否有任何特殊原因要格式化它?

1 个答案:

答案 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可以在某些支持下不需要额外的间距时使这个打印间距更加一致,因此它可能会在即将推出的版本中发生变化。