В NumPy предоставлены различные инструменты для изменения формы и структуры массивов. Понимание их использования очень важно, так как это позволяет гибко манипулировать данными.
reshape()
: позволяет изменить форму массива без изменения его данных.import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape(2, 3)
print(b)
# [[1 2 3]
# [4 5 6]]
ravel()
: возвращает одномерный массив, состоящий из элементов исходного массива.c = np.array([[1, 2, 3], [4, 5, 6]])
d = c.ravel()
print(d) # [1 2 3 4 5 6]
flatten()
: этот метод похож на ravel()
, но всегда возвращает копию массива.c = np.array([[1, 2, 3], [4, 5, 6]])
e = c.flatten()
print(e) # [1 2 3 4 5 6]
transpose()
: меняет местами строки и столбцы массива.f = np.array([[1, 2], [3, 4], [5, 6]])
g = f.transpose()
print(g)
# [[1 3 5]
# [2 4 6]]
resize()
: изменяет форму и размер массива. Если новый размер больше исходного, добавляет копии исходного массива.h = np.array([1, 2, 3])
i = np.resize(h, (2, 3))
print(i)
# [[1 2 3]
# [1 2 3]]
swapaxes()
: меняет местами две оси массива.j = np.array([[1, 2, 3]])
k = np.swapaxes(j, 0, 1)
print(k)
# [[1]
# [2]
# [3]]
rollaxis()
: перемещает указанную ось на заданную позицию.l = np.array([[1, 2, 3], [4, 5, 6]])
m = np.rollaxis(l, 1, 0)
print(m)
# [[1 4]
# [2 5]
# [3 6]]
Это основные методы для изменения формы и структуры массивов в NumPy. Конечно, в зависимости от задачи и контекста, вы можете использовать один или несколько из этих методов в разных комбинациях.
Рассмотрим методы для соединения и разбиения массивов в NumPy.
concatenate()
: этот метод соединяет два или более массивов вдоль существующей оси.import numpy as np
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
z = np.concatenate([x, y])
print(z) # [1 2 3 4 5 6]
Для многомерных массивов вы можете задать ось с помощью параметра axis
.
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
c = np.concatenate([a, b], axis=0)
print(c)
# [[1 2]
# [3 4]
# [5 6]]
vstack()
и hstack()
: вертикальное соединение и горизонтальное соединение являются удобными методами для соединения массивов.a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
v = np.vstack([a, b])
h = np.hstack([a, b])
print(v)
# [[1 2 3]
# [4 5 6]]
print(h) # [1 2 3 4 5 6]
stack()
: позволяет соединять массивы вдоль новой оси.a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
s = np.stack([a, b], axis=1)
print(s)
# [[1 4]
# [2 5]
# [3 6]]
split()
: разделяет массив на несколько подмассивов.x = np.array([1, 2, 3, 99, 99, 4, 5, 6])
x1, x2, x3 = np.split(x, [3, 5])
print(x1, x2, x3) # [1 2 3] [99 99] [4 5 6]
vsplit()
и hsplit()
: разделяет массив по вертикали и по горизонтали.matrix = np.arange(16).reshape(4, 4)
upper, lower = np.vsplit(matrix, 2)
left, right = np.hsplit(matrix, 2)
array_split()
: этот метод похож на split()
, но позволяет разделять массивы на не равные части.x = np.array([1, 2, 3, 4, 5, 6])
x1, x2, x3 = np.array_split(x, 3)
print(x1, x2, x3) # [1 2] [3 4] [5 6]
Используя указанные выше инструменты, вы можете легко и гибко манипулировать формой и структурой массивов в NumPy. Это особенно полезно при подготовке данных для анализа или когда необходимо преобразовать данные из одного формата в другой.
Содержание: