Я новичок в Python и Numpy. Для данного трехмерного массива, содержащего матрицы, мне нужно найти квадратный корень для каждой матрицы в этом массиве и сохранить результат в виде другого трехмерного массива, содержащего эти корни.
Я сделал следующее (Пример для shape (2,2,2)):
import numpy as np
import scipy.linalg
matrices = np.array([
[
[1, 0],
[0, 1]
],
[
[33, 24],
[48, 57]
],
])
# Finding roots
roots = []
for i in range(np.size(matrices[:,0, 0])):
root = scipy.linalg.sqrtm(matrices[i,:, :])
roots.append(root)
roots = np.array(roots)
И получил вывод
roots
array([[[1., 0.],
[0., 1.]],
[[5., 2.],
[4., 7.]]])
... что прекрасно, но медленно, если в массиве много матриц (например, форма равна (3000, n, n)).
Есть ли более эффективный способ сделать это?