Если m1 и m2 являются одномерными массивами комплексных матриц 2x2, то они по существу имеют форму (l, 2,2). Таким образом, умножение матрицы на двух последних осях эквивалентно суммированию произведения последней оси m1 со второй по последнюю ось m2. Это именно то, что делает np.dot:
Но это не то, что делает np.dot.
a = numpy.array([numpy.diag([1, 2]), numpy.diag([2, 3]), numpy.diag([3, 4])])
создает (3,2,2) массив матриц 2 на 2. Тем не менее, numpy.dot (a, a) создает 6 матриц, а форма результата - (3, 2, 3, 2). Это не то, что мне нужно. Мне нужен массив, содержащий numpy.dot (a [0], a [0]), numpy.dot (a [1], a [1]), numpy.dot (a [2], a [2] ) ...
[np.dot(m1[i],m2[i]) for i in range(l)]
должно работать, но я еще не проверил, является ли оно более быстрым, чем отображение лямбда-выражения.
Приветствия
v923z
РЕДАКТИРОВАТЬ: цикл for и карта работает примерно с одинаковой скоростью. Это приведение к numpy.array, которое отнимает много времени, но это должно быть сделано для обоих методов, поэтому здесь нет никакой выгоды.