2016-08-31 2 views
0

Я создал скрипт для создания списка: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 (dados) питона возвращения: <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

Так что увеличьте точность до размера вашего массива. Хотя я думаю, что max может составлять 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]] 

преобразовать его в массив, увидеть все это. У вашего ввода не было десятичных знаков, чтобы отображать числовые значения, опускает их.

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. Вам действительно нужно, чтобы увидеть все эти строки?

Этот стандарт печати можно изменить, но я сомневаюсь, нужно ли вам это делать.

Смежные вопросы