Как создать ndarray в Python, заполненном строка за строкой

Я хочу создать nxm ndarray с python следующим образом:

myarray = np.empty(n)
for index in range(5):
    row = do_some_calculations(index)# returns an array of length n
    np.stack[myarray, row]) 

который не работает. Я получаю сообщение об ошибке:

ValueError: all the input array dimensions except for the concatenation axis must match exactly

Кроме того, я не хочу, чтобы в первой строке были нули. Должен ли я использовать в цикле оператор if-else или есть более питонический способ сделать это?

Возможный дубликат Numpy - добавить строку в массив

chthonicdaemon 18.03.2018 15:14

Пожалуйста, покажите точный код. Ошибка намекает на то, что вы складываете массивы неравного размера, поэтому ваше утверждение, что do_some_calculations(index) «возвращает массив длины n», кажется неверным.

Oliver W. 18.03.2018 15:14

Да не такой же длины ... Но как это сделать в ОБЩЕМ? С дополнительным если?

Alex 18.03.2018 15:22
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте np.vstack вместо np.stack.

Кажется, ваше намерение состоит в том, чтобы итеративно добавить массив внизу ND-массива (что, кстати, неэффективно, посмотрите, не можете ли вы сгенерировать весь массив за один раз). После первой итерации форма вашего myarray изменится (при условии, что вы переназначили, что ваш код не отображал) на матрицу 2 на что-то. В документации numpyp.stack указано

arrays : sequence of array_like Each array must have the same shape

numpy.vstack менее строг.

А как насчет первой строки нуля?

Alex 18.03.2018 15:25

Если вы не можете сделать инициализацию более одноразовой, как насчет повторной индексации после цикла? Как это: myarray = myarray[1:,:]? Если бы это был я, я бы попытался обобщить ваш do_some_calculations, но без вашего фактического кода (или его минимальной версии) никто не мог бы догадаться.

Oliver W. 18.03.2018 15:29

@Alex, значит, на твой вопрос ответили? Если да, отметьте проблему как решенную, поставив галочку рядом с ответом. Это также будет означать, что ваша проблема решена.

Oliver W. 18.03.2018 18:42

Другие вопросы по теме