2016-08-31 76 views
0

我创建了一个脚本生成一个列表:当我打印type (dados)蟒蛇回报np.array返回numpy.ndarray用“......”

import random 

nota1 = range (5, 11) 
nota2 = range (5, 11) 
nota3 = range (5, 11) 
nota4 = range (0, 2) 

dados = [] 

for i in range(1000): 

    dados_dado = [] 

    n1 = random.choice(nota1) 
    n2 = random.choice(nota2) 
    n3 = random.choice(nota3) 
    n4 = random.choice(nota4) 

    n1 = float (n1) 
    n2 = float (n2) 
    n3 = float (n3) 
    n4 = float (n4) 

    dados_dado.append (n1) 
    dados_dado.append (n2) 
    dados_dado.append (n3) 
    dados_dado.append (n4) 

    dados.append (dados_dado) 

<type 'list'>,一个巨大的名单,看起来像这样:

[[5.0, 8.0, 10.0, 1.0], [8.0, 9.0, 9.0, 1.0], [7.0, 5.0, 6.0, 1.0], [5.0, 8.0, 7.0, 0.0], [9.0, 7.0, 10.0, 0.0], [6.0, 7.0, 9.0, 1.0], [6.0, 9.0, 8.0, 1.0]] 

我需要将其转换为<type 'numpy.ndarray'>所以我做:

data = np.array(dados) 

我预计回报率是这样的:

[[ 6.8 3.2 5.9 2.3] 
[ 6.7 3.3 5.7 2.5] 
[ 6.7 3. 5.2 2.3] 
[ 6.3 2.5 5. 1.9] 
[ 6.5 3. 5.2 2. ] 
[ 6.2 3.4 5.4 2.3] 
[ 5.9 3. 5.1 1.8]] 

但是,我所得到的却是:

[[ 7. 10. 6. 1.] 
    [ 8. 6. 6. 1.] 
    [ 6. 9. 5. 0.] 
    ..., 
    [ 9. 7. 10. 0.] 
    [ 6. 7. 9. 1.] 
    [ 6. 9. 8. 1.]] 

我到底做错了什么?

+2

为什么你期望numpy数组中的非整数结果,当它们不在你的列表中!? – Eric

回答

0

你的数组没有问题。 NumPy默认禁止大数组显示整个数组。 (如果你实际上期望你的数组足够短而不触发这种行为,或者如果你真的希望它有非整数的条目,那么你必须解释你为什么期望这样做)。

0
numpy.set_printoptions(precision=20) 

会给你更多的显示性,设置精度,如你所愿。

+0

这应该显示我所有的结果?我试过了,我没有看到任何区别。 –

+0

因此提高数组大小的精度。虽然我认为最高可能是999。 – Andrew

1

与样品:

In [574]: dados=[[5.0, 8.0, 10.0, 1.0], [8.0, 9.0, 9.0, 1.0], [7.0, 5.0, 6.0, 1. 
    ...: 0], [5.0, 8.0, 7.0, 0.0], [9.0, 7.0, 10.0, 0.0], [6.0, 7.0, 9.0, 1.0], 
    ...: [6.0, 9.0, 8.0, 1.0]] 

In [575]: print(dados) 
[[5.0, 8.0, 10.0, 1.0], [8.0, 9.0, 9.0, 1.0], [7.0, 5.0, 6.0, 1.0], [5.0, 8.0, 7.0, 0.0], [9.0, 7.0, 10.0, 0.0], [6.0, 7.0, 9.0, 1.0], [6.0, 9.0, 8.0, 1.0]] 

将其转换为一个数组,一个看到了整个事情。你的输入没有小数点,numpy显示忽略了那些。

In [576]: print(np.array(dados)) 
[[ 5. 8. 10. 1.] 
[ 8. 9. 9. 1.] 
[ 7. 5. 6. 1.] 
[ 5. 8. 7. 0.] 
[ 9. 7. 10. 0.] 
[ 6. 7. 9. 1.] 
[ 6. 9. 8. 1.]] 

复制列表很多次,打印显示有这个...,而不是显示10000行。这很好,不是吗?

In [577]: print(np.array(dados*1000)) 
[[ 5. 8. 10. 1.] 
[ 8. 9. 9. 1.] 
[ 7. 5. 6. 1.] 
..., 
[ 9. 7. 10. 0.] 
[ 6. 7. 9. 1.] 
[ 6. 9. 8. 1.]] 

全阵列仍然存在

In [578]: np.array(dados*1000).shape 
Out[578]: (7000, 4) 

默认为numpy的加省略号时,总条目数为1000。你真的需要看到所有这些线路?

打印标准可以更改,但我质疑您是否需要这样做。

相关问题