Метод reshape()
b[0, 0] = -99 print(b)
[[-99. 2.]
[3. 4.]]
print(a)
[-99. 2. 3. 4.]
cлайд 17/58
Метод reshape()
Если требуется поместить числа от
до
в таблицу 

:
grid = np.arange(1, 10).reshape((3, 3)) print(grid)
[[1 2 3] [4 5 6] [7 8 9]]
Размер исходного массива должен соответствовать размеру измененного!
cлайд 18/58
Транспонирование массива
Метод transpose() возвращает представление массива с транспонированными осями. Для двумерного массива это обычная операция транспонирования матрицы:
a = np.linspace(1, 6, 6).reshape(3, 2) print(a)
[[1., 2.], [3., 4.], [5., 6.]]
print(a.transpose()) # Или просто a.T
[[1., 3., 5.], [2., 4., 6.]]
cлайд 19/58
Объединение массивов
Слияние, или объединение, двух массивов в библиотеке NumPy выполняется в основном с
помощью функций np.concatenate() , np.vstack() и np.hstack() .
Функция np.concatenate() принимает на входе кортеж или список массивов:
x = np.array([1, 2, 3]) y = np.array([3, 2, 1])
print(np.concatenate([x, y]))
[1, 2, 3, 3, 2, 1]
Можно объединять более двух массивов одновременно:
z = [99, 99, 99] print(np.concatenate([x, y, z]))
[ 1 2 3 3 2 1 99 99 99]
cлайд 20/58
Объединение массивов
Для объединения двумерных массивов можно также использовать np.concatenate() :
grid = np.array([[1, 2, 3], [4, 5, 6]])
print(np.concatenate([grid, grid])) # слияние по первой оси координат
[[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]
print(np.concatenate([grid, grid], axis=1)) # слияние по второй оси координат
[[1, 2, 3, 1, 2, 3], [4, 5, 6, 4, 5, 6]]
cлайд 21/58
Объединение массивов
Для работы с массивами с различающимися измерениями удобнее и понятнее использовать функции np.vstack() (вертикальное объединение) и np.hstack() (горизонтальное объединение):
x = np.array([1, 2, 3])
grid = np.array([[9, 8, 7], [6, 5, 4]])
print(np.vstack([x, grid])) # Объединяет массивы по вертикали
[[1, 2, 3], [9, 8, 7], [6, 5, 4]]
y = np.array([[99], [99]]) # Объединяет массивы по горизонтали print(np.hstack([grid, y]))
[[ |
9, |
8, |
7, |
99], |
|
[ |
6, |
5, |
4, |
99]] |
cлайд 22/58 |
|
|
|
|
|
Срезы массивов: доступ к подмассивам
Срезы массивов: доступ к подмассивам
Синтаксически срезы массивов NumPy соответствуют срезам стандартных списков Python:
:
x = np.arange(10) print(x)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(x[:5])
array([0, 1, 2, 3, 4])
print(x[4:7])
array([4, 5, 6])
cлайд 23/58
Срезы массивов: доступ к подмассивам
Операция среза для массива NumPy возвращает представление (view), а не копию данных, как для списков Python.
a = np.linspace(1, 6, 6) print(a)
[1. 2. 3. 4. 5. 6.]
print(a[1:4:2]) # Элементы a[1] и a[3] (с шагом 2)
[2., 4.]
print(a[3::-2]) # Элементы a[3] и a[1] (с шагом -2)
[4., 2.]
cлайд 24/58
Срезы массивов: многомерные массивы
a = np.linspace(1, 12, 12).reshape(4, 3) print(a)
[[ 1., |
2., |
3.], |
|
[ |
4., |
5., |
6.], |
[ |
7., |
8., |
9.], |
[10., |
11., |
12.]] |
|
print(a[3, 1]) |
print(a[:, 1]) # Все элементы во втором столбце |
11.0 |
[2., 5., 8., 11.] |
# Все элементы в третьей строке |
# Средние строки, начиная со второго столбца |
print(a[2]) |
print(a[1:-1, 1:]) |
[7., 8., 9.] |
[[5., |
6.], |
cлайд 25/58 |
|
[8., |
9.]] |
