np.array返回numpy.ndarray和“…”

2024-10-02 10:25:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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 return:<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.]]

我做错什么了


Tags: 列表typerangerandomfloatchoiceappendn2
3条回答

您的样品:

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]]

把它转换成一个数组,这样就可以看到整个过程。您的输入没有小数点,请忽略这些小数点

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.]]

多次复制列表,并且print display有这个...,而不是显示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时添加省略号。是否确实需要查看所有这些行

印刷标准可以改变,但我怀疑你是否需要这样做

numpy.set_printoptions(precision=20)

将给你更多的可显示性,设置精度为您的愿望

你的阵型不错。默认情况下,NumPy只会对大型数组抑制整个数组的显示

(如果实际希望数组足够短而不会触发此行为,或者实际希望数组包含非整数项,则必须解释为什么会出现这种情况。)

相关问题 更多 >

    热门问题