Я начинающий программист, начинающий код в python. У меня есть два массива 2D numpy, которые я хочу объединить, чтобы сформировать массив 4D numpy следующим образом: array_4d[i, j, k, l] = array_1[i, j] * array_2[k, l]
Я могу, конечно, переделать это, написав вложенные для циклов, но я хочу знать, есть ли более эффективный способ для этого, и если эта операция уже предопределена в каком-то пакете. СпасибоМатричные прямые индексы сохранения продукта в python
2
A
ответ
3
Вы имели в виду np.einsum
? Это позволяет вам записать это довольно элегантно:
>>> import numpy as np
>>> a = np.random.random_integers(0,9, (2,2))
>>> b = np.random.random_integers(0,9, (3,3))
>>> c = np.einsum('ij,kl-> ijkl', a, b)
>>> a
array([[4, 5],
[8, 0]])
>>> b
array([[6, 8, 4],
[8, 5, 5],
[8, 9, 8]])
>>> c
array([[[[24, 32, 16],
[32, 20, 20],
[32, 36, 32]],
[[30, 40, 20],
[40, 25, 25],
[40, 45, 40]]],
[[[48, 64, 32],
[64, 40, 40],
[64, 72, 64]],
[[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0]]]])
Петли будут на C, так что это быстро.
Данный продукт может также легко сделано с вещании Numpy в:
>>> c2 = a[...,np.newaxis, np.newaxis]*b
>>> np.any(c2-c)
False # indicates that both approaches result in the same ndarray
Этот последний подход оказывается даже быстрее, но имейте в виду, что временные результаты часто зависят от входных массивов:
In [61]: a = np.random.random_integers(0,9, (20,30))
In [62]: b = np.random.random_integers(0,9, (300,500))
In [63]: %timeit c2 = a[...,np.newaxis, np.newaxis]*b
1 loops, best of 3: 250 ms per loop
In [64]: %timeit c = np.einsum('ij,kl-> ijkl', a, b)
1 loops, best of 3: 342 ms per loop
Смежные вопросы
- 1. Получить исходные матричные индексы в устройстве CUDA
- 2. Матричные вычисления Python
- 3. Наследовать метод сохранения продукта
- 4. Матричные ограничения CPLEX Python API
- 5. python complex_ode передают матричные параметры
- 6. Получение количества продукта до и после сохранения продукта в magento
- 7. Matlab, матричные операции
- 8. Как уменьшить матричные столбцы в python?
- 9. матричные записи также матрицы в python
- 10. Python - сплит-матричные данные в отдельные столбцы
- 11. Python получить прямые атрибуты класса
- 12. Различные индексы в python
- 13. Как создать прямые переменные в pygame python
- 14. Ошибка сохранения продукта после удаления изображений продукта - Magento ver. 1.8.1.0
- 15. Матричные утилиты для OpenGL для Python?
- 16. Как пройти через матричные блоки?
- 17. Функция сохранения в python
- 18. Матричные вычисления
- 19. индексы точки python в KDTree
- 20. Совокупные индексы данных в python
- 21. Матричные классы в C++
- 22. Матричные операции в openCV
- 23. Матричные преобразования в OpenGL
- 24. матричные subs в sympy
- 25. Матричные указатели в Java
- 26. Матричные операции в MatLab
- 27. Матричные средние в Haskell
- 28. Матричные уравнения в Matlab
- 29. python, индексы минимального массива
- 30. Индексы списка Python
Спасибо, что блестяще! Именно то, что мне нужно. – user231042
@ user231042 вы должны принять ответ. [Ответчик получит очки и * вы получите очки] (http://stackoverflow.com/help/accepted-answer)! Выиграйте Win! – tmthydvnprt