2014-06-05 107 views
1

我一直試圖使用具有設定爲0.0的所有元素的numpy的模塊以創建一個6×6陣列在python:創建陣列使用零

import numpy as np 
RawScores = np.zeros((6,6), dtype=np.float) 
print RawScores 

此輸出:

[[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.]] 

爲什麼沒有逗號?它仍然是一個沒有他們的陣列?

+3

這只是'numpy' *顯示*的方式 - 儘量'鍵入(RawScores)'來檢查它是你認爲的。 – jonrsharpe

+0

打印類型(RawScores)產生了的輸出,所以我認爲這意味着它必須是一個數組,所以沒有逗號!謝謝 :) – Oceanescence

回答

2

這是因爲print函數調用__str__方法,而不是__repr__方法。看下面的例子。請詳細解釋這兩種方法之間的差異see here

# Python 2D List 
>>> [[0]*6]*6 
[[0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0]] 

>>> import numpy as np 
>>> np.zeros((6,6)) 
array([[ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.]]) 

# calls __repr__ 
>>> a = np.zeros((6,6)) 
>>> a 
array([[ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0., 0.]]) 

# calls __str__ 
>>> print a 
[[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0.]] 
0

如果你真的很在乎逗號,你可以隨時重新定義方式numpy的打印出的陣列,非常髒例如:

import numpy as np 
RawScores = np.zeros((6,6), dtype=np.float) 
def add_comma(num): 
    return "%g, " % num 

np.set_printoptions(formatter={"all":add_comma}) 
print RawScores 
[[0, 0, 0, 0, 0, 0, ]  
[0, 0, 0, 0, 0, 0, ] 
[0, 0, 0, 0, 0, 0, ] 
[0, 0, 0, 0, 0, 0, ] 
[0, 0, 0, 0, 0, 0, ] 
[0, 0, 0, 0, 0, 0, ]]