У меня есть массив numpy, содержащий:
[1, 2, 3]
Я хочу создать массив, содержащий:
[1, 2, 3, 1]
То есть я хочу добавить первый элемент в конец массива.
Я пробовал очевидное:
np.concatenate((a, a[0]))
Но я получаю сообщение об ошибке ValueError: arrays must have same number of dimensions
Я этого не понимаю - оба массива - это всего лишь 1d массивы.
np.insert([1,2,3], 3, 1)
Ответы:
append()
создает новый массив, который может быть старым массивом с добавленным элементом.Я думаю, что более нормально использовать правильный метод добавления элемента:
источник
a
массив. Однако он возвращает новый измененный массив. Так что, еслиa
требуется модификация, ееa = numpy.append(a,a[0])
нужно использовать.np.append
используетnp.concatenate
. Это просто гарантирует, что аддон имеет одно измерение. Ошибка OP имелаa[0]
0 размеров.a.append(1)
,a.add(1)
или даже что-то подобное спискам, напримерa + [1]
При добавлении только один раз или один раз время от времени использование
np.append
в вашем массиве должно быть нормальным. Недостатком этого подхода является то, что память выделяется для совершенно нового массива каждый раз, когда он вызывается. При увеличении массива для значительного количества выборок было бы лучше либо предварительно выделить массив (если известен общий размер), либо добавить в список и преобразовать в массив впоследствии.Использование
np.append
:Используя преобразование списка Python в массив после этого:
Предварительное выделение массива numpy:
Когда окончательный размер неизвестен, предварительное выделение ресурсов затруднено, я пробовал предварительно выделить блоки по 50, но это не приблизилось к использованию списка.
источник
a[0]
не является массивом, это первый элементa
и поэтому не имеет размеров.Попробуйте использовать
a[0:1]
вместо этого, который вернет первый элементa
внутри одного массива элементов.источник
Попробуй это:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
concatenate требует, чтобы оба элемента были массивами numpy; однако [0] не является массивом. Вот почему это не работает.
источник
np.concatenate((a, [a[0]]))
. В любом случае список будет преобразован в массив автоматически, что сэкономит вам время на вводе текста.Эта команда,
не изменяет
a
массив. Однако он возвращает новый измененный массив. Итак, еслиa
требуется модификация, необходимо использовать следующее.источник
источник
Это может быть немного излишним, но я всегда использую эту
np.take
функцию для любой циклической индексации:источник
Допустим,
a=[1,2,3]
и вы этого хотите[1,2,3,1]
.Вы можете использовать встроенную функцию добавления
Здесь 1 - это int, это может быть строка, которая может принадлежать или не принадлежать элементам в массиве. Печать:
[1,2,3,1]
источник
Если вы хотите добавить элемент, используйте
append()
a = numpy.append(a, 1)
в этом случае добавьте 1 в конец массиваЕсли вы хотите вставить элемент, используйте
insert()
a = numpy.insert(a, index, 1)
в этом случае вы можете поместить 1 там, где хотите, используя index для установки позиции в массиве.источник