Python numpy-漂亮的印刷

Python numpy-漂亮的印刷,python,numpy,Python,Numpy,我有一个numpy字符串数组。当数组中的值未定义时,将不会像预期的那样打印任何值。是否可以为“无”值提供默认值 e、 g.在下面的示例中,我希望使用“u”而不是“无” [[None B C] [M None O] [X Y None]] 将成为 [[_ B C] [M _ O] [X Y _]] 一个简单的解决方案可能是先将数组转换为字符串,然后再替换字符串None,例如,如果矩阵是a: print(str(a).replace('None','_')) 您还可以定义一个函数: d

我有一个numpy字符串数组。当数组中的值未定义时,将不会像预期的那样打印任何值。是否可以为“无”值提供默认值

e、 g.在下面的示例中,我希望使用“u”而不是“无”

[[None B C]
 [M None O]
 [X Y None]]
将成为

[[_ B C]
 [M _ O]
 [X Y _]]

一个简单的解决方案可能是先将数组转换为字符串,然后再替换字符串None,例如,如果矩阵是
a

print(str(a).replace('None','_'))
您还可以定义一个函数:

def printarray(a): 
    print(str(a).replace('None','_'))

一个简单的解决方案可能是先将数组转换为字符串,然后再替换字符串None,例如,如果矩阵是
a

print(str(a).replace('None','_'))
您还可以定义一个函数:

def printarray(a): 
    print(str(a).replace('None','_'))

Numpy能够根据测试条件创建布尔数组,然后使用这些带有括号表示法的布尔数组来更改选定的值。对于字符串数组
foo

is_none = (foo == None)
foo[ is_none ] = "_"

(是的,我知道在与
None
比较时,通常应该使用
is
,但是由于您知道输入是字符串,并且我不认为Numpy提供向量化的
is
语句,
=
就可以了。)

Numpy能够根据测试条件创建布尔数组,然后使用这些带括号符号的布尔数组来更改选定的值。对于字符串数组
foo

is_none = (foo == None)
foo[ is_none ] = "_"

(是的,我知道通常使用<代码> <代码> >与<代码>没有<代码>,但是既然你知道你的输入是一个字符串,我不认为NoMPI提供了一个矢量化的<代码> 语句,<代码>=< /代码>就好了。

< p>你也可以考虑使用一个蒙版数组:

import numpy as np

x=np.array([[None, 'B', 'C'],
          ['M', None, 'O'],
          ['X', 'Y', None]])
print(x)
# [[None B C]
#  [M None O]
#  [X Y None]]

x=np.ma.masked_equal(x,None)
print(x)
# [[-- B C]
#  [M -- O]
#  [X Y --]]

您也可以考虑使用掩蔽数组:

import numpy as np

x=np.array([[None, 'B', 'C'],
          ['M', None, 'O'],
          ['X', 'Y', None]])
print(x)
# [[None B C]
#  [M None O]
#  [X Y None]]

x=np.ma.masked_equal(x,None)
print(x)
# [[-- B C]
#  [M -- O]
#  [X Y --]]

问题是,这会强制所有字符串不包含“None”,否则它们将被修改。问题是,这会强制所有字符串不包含“None”,否则它们将被修改。