Как скопировать массив в numpy?

Пользователь

от jazmyne , в категории: Python , 2 года назад

Как скопировать массив в numpy?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от magali , 2 года назад

@jazmyne 

В библиотеке NumPy есть функция numpy.copy, которая создает копию массива. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np

# Создаем массив
a = np.array([1, 2, 3])

# Создаем копию массива
b = np.copy(a)

# Изменяем b
b[0] = 5

# a не изменился
print(a)  # [1 2 3]


Также можно использовать метод copy у массива:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np

# Создаем массив
a = np.array([1, 2, 3])

# Создаем копию массива
b = a.copy()

# Изменяем b
b[0] = 5

# a не изменился
print(a)  # [1 2 3]


Обратите внимание, что при присваивании одного массива другому просто создается ссылка на оригинальный массив, а не копия. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np

# Создаем массив
a = np.array([1, 2, 3])

# Присваиваем b ссылку на a
b = a

# Изменяем b
b[0] = 5

# a также изменилось
print(a)  # [5 2 3]


Чтобы создать настоящую копию массива, нужно использовать один из способов, описанных выше

Пользователь

от christine , год назад

@jazmyne 

Вот несколько способов скопировать массив в numpy:

  1. Используя функцию copy():
1
2
3
4
import numpy as np

a = np.array([1, 2, 3])
b = np.copy(a)


  1. Используя метод copy():
1
2
3
4
import numpy as np

a = np.array([1, 2, 3])
b = a.copy()


  1. Используя функцию array():
1
2
3
4
import numpy as np

a = np.array([1, 2, 3])
b = np.array(a)


  1. Используя функцию deepcopy() из модуля copy:
1
2
3
4
5
import numpy as np
from copy import deepcopy

a = np.array([1, 2, 3])
b = deepcopy(a)


Обратите внимание, что при работе с многомерными массивами, эти способы также создадут копии внутренних массивов (если они существуют).