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