我有一个numpy字符串数组。如果未定义数组中的值,则按预期打印None。是否可以为None值提供默认值?
e.g。在下面我想要“_”而不是无
[[None B C]
[M None O]
[X Y None]]
会变成
[[_ B C]
[M _ O]
[X Y _]]
答案 0 :(得分:7)
您也可以考虑使用蒙面数组:
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 --]]
答案 1 :(得分:3)
Numpy能够根据测试条件创建布尔数组,然后使用带括号表示法的布尔数组来更改选定的值。对于字符串数组foo
:
is_none = (foo == None)
foo[ is_none ] = "_"
(是的,我知道通常你在与is
比较时应该使用None
,但是因为你知道你的输入是一个字符串,我不认为Numpy提供了一个矢量化的{{1}声明,is
就好了。)
答案 2 :(得分:0)
一个简单的解决方案可能是先将数组转换为字符串然后替换字符串None,例如,如果矩阵为a
:
print(str(a).replace('None','_'))
你也可以定义一个函数:
def printarray(a):
print(str(a).replace('None','_'))