我有一個numpy的字符串數組。當數組中的值未定義時,將按照您的預期打印「無」。是否可以爲None值提供默認值?numpy - 漂亮的印刷
例如下面我想「_」代替無
[[None B C]
[M None O]
[X Y None]]
將成爲
[[_ B C]
[M _ O]
[X Y _]]
我有一個numpy的字符串數組。當數組中的值未定義時,將按照您的預期打印「無」。是否可以爲None值提供默認值?numpy - 漂亮的印刷
例如下面我想「_」代替無
[[None B C]
[M None O]
[X Y None]]
將成爲
[[_ B C]
[M _ O]
[X Y _]]
一個簡單的解決辦法可能是你的數組首先轉換爲字符串,然後再把替換字符串無,例如,如果你的矩陣是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
聲明==
會就好了)
你也可以考慮使用屏蔽數組:
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,屏蔽陣列是最乾淨的解決方案。 – jfs 2011-02-28 09:19:07
的問題是,這會強制所有的字符串不包含「無」,否則將被修改。 – EOL 2012-06-30 05:08:49