Замена части массива numpy на другой массив
Есть массив формой a = (5, 1) . Я беру часть массива b = a[0:4] . Изменяю его, и у меня получается массив b = (8, 1) . Теперь массивом b нужно заменить элементы, которые я брал у массива а.
a[0:4] = b - таким способом не получается.
Отслеживать
25.4k 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
задан 27 июн 2020 в 17:18
93 7 7 бронзовых знаков
А нужно именно заменить? Причём куском другого размера? Проще наверное новый массив создать из нужных элементов.
27 июн 2020 в 17:36
Нужно чтобы элементы нетронутые в начале, так и остались нетронутыми. Да, как вариант, можно брать лишние элементы в начале, и добавлять после всех операций, но может есть способ проще
27 июн 2020 в 17:43
Приведите всё-таки конкретный пример не с формой, а с содержанием массивов, а то всё-равно не совсем понятно.
27 июн 2020 в 17:48
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Это точно numpy-массивы? Тогда так:
import numpy as np a=np.array([1,2,3,4,5]) b=np.array([8,7,6,5,4,3,2,1]) a=np.hstack((b,a[4:])) print(a)
[8 7 6 5 4 3 2 1 5]
Отслеживать
ответ дан 27 июн 2020 в 19:29
11.7k 2 2 золотых знака 10 10 серебряных знаков 16 16 бронзовых знаков
- python
- массивы
- numpy
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как скопировать один массив в другой java
Для копирования одного массива в другой в Java можно использовать метод System.arraycopy() или использовать цикл for для копирования каждого элемента в новый массив.
Пример использования System.arraycopy() :
int[] source = 1, 2, 3, 4, 5>; int[] destination = new int[source.length]; System.arraycopy(source, 0, destination, 0, source.length); System.out.println(Arrays.toString(destination )); // => [1, 2, 3, 4, 5]
Пример использования цикла for :
int[] source = 1, 2, 3, 4, 5>; int[] destination = new int[source.length]; for (int i = 0; i source.length; i++) destination[i] = source[i]; >
Клонирование списков в Python
Python обладает своей особенностью при работе со списками. Допустим, существует список my_list , и его нужно скопировать в новый список new_list . Самым прявидным и простым способом кажется операция присваивания:
my_list = [1, 2, 3, 4, 5] new_list = my_list
Однако после этого при изменении new_list , изменяется и исходный my_list . Это происходит потому, что в Python списки являются изменяемыми объектами, и при присваивании new_list = my_list создается не новый список, а новая ссылка на уже существующий. Это означает, что любые изменения в new_list отразятся и на my_list , так как обе переменные указывают на одни и те же данные.
new_list.append(6) print(my_list) # Выведет: [1, 2, 3, 4, 5, 6]
Решение
Чтобы избежать этого, необходимо создать копию (или клон) списка. В Python есть несколько способов сделать это.
Использование метода copy()
Самый простой и понятный способ — использовать встроенный метод copy() :
my_list = [1, 2, 3, 4, 5] new_list = my_list.copy()
Теперь new_list является отдельным списком, и изменения в нем не затрагивают my_list .
Использование функции list()
Также можно использовать функцию list() , которая преобразует итерируемый объект в список. Если в качестве аргумента передать список, то получится его копия:
my_list = [1, 2, 3, 4, 5] new_list = list(my_list)
Использование срезов
Еще один способ — использовать срезы. Если не указывать индексы начала и конца, то в результате получится копия всего списка:
my_list = [1, 2, 3, 4, 5] new_list = my_list[:]
Теперь, зная о том, как работают списки в Python, можно избежать неожиданных изменений исходных данных при их копировании.
Артём Санников
Данная книга является руководством для начинающих специалистов в области анализа и обработки данных. В книге рассматривается язык SQL и его процедурное расширение PL/SQL от компании Oracle.

Главная › Языки программирования › Python › Списки › Копирование списка в Python
Копирование списка в Python
Копирование списков очень удобная вещь, так как на основе одного списка можно создать другой за считанные секунды. Чтобы скопировать список, создайте срез, включающий весь исходный список без указания первого и последнего индекса [:] . Данная конструкция создаёт срез, который начинается с первого элемента и заканчивается последним, в результате этого создаётся копия списка.
# Текущий список users = ["Иванов", "Петров", "Сидоров"] # Создаём новый список и создаём срез для копирования старого списка new_users = users[:] # Выводим старый список print("Это старый список фамилий:") print(users) # Выводим новый список print("\nЭто новый список фамилий:") print(new_users) # Финальный результат в консоли Это старый список фамилий: ['Иванов', 'Петров', 'Сидоров'] Это новый список фамилий: ['Иванов', 'Петров', 'Сидоров']
Записи по теме
- Проверка отсутствия значения в списке Python
- Проверка вхождения значения в список Python
- Перебор содержимого среза списка в Python
- Срез для списка в Python
- Генератор списков в Python
- Создание числового списка при помощи range() в Python
- Перебор всего списка в Python
- Определение длины списка в Python