2014-06-05 77 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, ]]