Numpy массивы (добавить, объединить) - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь добавить "среднее" в другой массив numpy "все средние", но добавляю, конкатенация возвращает с ошибками:

n1, n2, n3  = 5 , 16, 27
all_averages = np.array ([], dtype = float)
for i in range(1000):
    sample_2 = pareto.rvs (7, size = n1)
    average = np.array([np.average(sample_2)])
    all_averages.append(average)

'numpy .ndarray' объект не имеет атрибут 'append'

n1, n2, n3  = 5 , 16, 27
all_averages = np.array ([], dtype = float)
for i in range(1000):
    sample_2 = pareto.rvs (7, size = n1)
    average = np.array([np.average(sample_2)])
    np.concatenate((all_averages, average))
print(all_averages)

[]

Что мне не хватает?

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Кроме того, в дополнение к @ Grégoire Roussel вы можете сделать то же самое с append(), который имеет следующую подпись: numpy.append(arr, values, axis=None)

Следовательно, вам придется сделать следующее (последняя строка изменена) :

n1, n2, n3  = 5 , 16, 27
all_averages = np.array ([], dtype = float)
for i in range(1000):
    sample_2 = pareto.rvs (7, size = n1)
    average = np.array([np.average(sample_2)])
    all_averages = np.append(all_averages, average)
1 голос
/ 10 февраля 2020

Numpy массивы не похожи на python списки, они имеют фиксированный размер. Вот почему вы не найдете метод append.

Однако вы действительно близки к решению: np.concatenate не работает на месте, но возвращает сцепление массив. Вы должны осмотреться

all_averages = np.concatenate((all_averages, average))

Чтобы быть еще более эффективным, попробуйте выполнить только одну concatenate операцию. Сохраните все средние в списке, а затем объедините их все вместе. Таким образом, вы избежите ненужных копий между массивами

n1, n2, n3  = 5 , 16, 27
all_averages_list = []
for i in range(1000):
    sample_2 = pareto.rvs (7, size = n1)
    average = np.array([np.average(sample_2)])
    all_averages_list.append(average)
all_averages = np.concatenate(all_averages_list, axis=0) # check axis param, I'm not sure here
print(all_averages)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...