np.array返回numpy.ndarray与" ..."

时间:2016-08-31 21:34:38

标签: python arrays numpy

我创建了一个脚本来生成一个列表:

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 (dados) python返回:<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.]]

我做错了什么?

3 个答案:

答案 0 :(得分: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.]]

多次复制列表,并且打印显示具有此...,而不是显示10,000行。这很好不是吗?

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时添加省略号。你真的需要查看所有这些行吗?

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

答案 1 :(得分:0)

你的阵列很好。 NumPy默认禁止显示大型数组的整个数组。

(如果你实际上 希望你的数组足够短而不会触发这种行为,或者如果你实际上期望它有非整数条目,那你就必须解释为什么你期望这样。)

答案 2 :(得分:0)

numpy.set_printoptions(precision=20)

将为您提供更多可展示性,并根据需要设置精度。