как применить функцию (matrix -> scalar) к 3 dim массиву numpy в python

#python #arrays #numpy

#python #массивы #numpy

Вопрос:

Допустим, у меня есть 3-мерный массив numpy a , например, как показано ниже:

 import numpy as np
a = np.random.randn(3, 3, 3)
  

Как я могу применить функцию типа (matrix-> scalar) к a ? Более конкретно, я хочу сделать аналогичную вещь, как показано ниже, более эффективным с точки зрения вычислений способом:

 [np.linalg.det(e) for e in a]
  

Комментарии:

1. numpy.org/doc/stable/user/tutorials_index.html

Ответ №1:

np.linalg.det(a) кажется, работает просто отлично и имеет значительно лучшее время выполнения:

 a = np.random.rand(100,3,3)

%timeit -n 100 [np.linalg.det(e) for e in a]
626 µs ± 26.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit -n 100 np.linalg.det(a)
33.9 µs ± 7.08 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)