Вывод list.append печатает слово «массив» после каждой итерации. - PullRequest
0 голосов
/ 18 июня 2020

Я хочу составить список из python, состоящий из разных записей. Каждая запись в списке встречается разное количество раз:

import numpy as np
frequency = (1, 2, 1, 2, 1)
numbers = np.random.choice(9, size = (5, 3), replace=True)
list = []

for i in range(0, 5):
    list.append(np.tile(numbers[i], (int(frequency[i]), 1)))
print(list)

Это нормально работает. Однако, когда я смотрю на вывод (print (list)), я получаю следующее:

[array([[1, 8, 1]]), array([[2, 8, 0],
   [2, 8, 0]]), array([[6, 8, 6]]), array([[2, 1, 8],
   [2, 1, 8]]), array([[4, 6, 1]])]

Почему он включает слово «массив» для каждой итерации? Я просто хотел бы иметь такой список:

[[1 8 1]
[2 8 2]
[2 8 2]
[6 8 6]
[2 1 8]
[2 1 8]
[4 6 1]]

Ответы [ 2 ]

2 голосов
/ 18 июня 2020

Потому что вы используете два разных типа данных - classi c python list и numpy list. Когда вы распечатываете список classi c, он покажет вам [a, b, c], но для списка numpy он покажет вам array([a, b, c])

1 голос
/ 18 июня 2020

Почему он включает слово «массив» для каждой итерации?

У вас есть list из numpy.array s, поскольку numpy.tile функция возвращает numpy.array.

Я просто хотел бы иметь такой список:

Желаемый результат предполагает, что вы ищете один 2D-массив, который может быть создан из list 1D массивы с использованием функции numpy.vstack. Рассмотрим следующий пример:

import numpy as np
mylist = [np.array([1,2,3]),np.array([4,5,6]),np.array([7,8,9])]
myarray = np.vstack(mylist)
print(myarray)

Вывод:

[[1 2 3]
 [4 5 6]
 [7 8 9]]

В качестве примечания: пожалуйста, не python имена встроенных функций в качестве переменных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...