2011-02-27 51 views
1

我有一個numpy的字符串數組。當數組中的值未定義時,將按照您的預期打印「無」。是否可以爲None值提供默認值?numpy - 漂亮的印刷

例如下面我想「_」代替無

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

將成爲

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

回答

0

一個簡單的解決辦法可能是你的數組首先轉換爲字符串,然後再把替換字符串無,例如,如果你的矩陣是a

print(str(a).replace('None','_')) 

你也可以定義一個函數:

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

的問題是,這會強制所有的字符串不包含「無」,否則將被修改。 – EOL 2012-06-30 05:08:49

3

Numpy能夠根據測試條件創建布爾數組,然後使用帶括號符號的布爾數組來更改選定的值。對於一個字符串數組foo

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

(是的,我知道,通常你應該None比較時使用is,但因爲你知道你輸入一個字符串,我不認爲與NumPy提供了一個量化的is聲明==會就好了)

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

+1,屏蔽陣列是最乾淨的解決方案。 – jfs 2011-02-28 09:19:07