Я столкнулся с этим кодом Python (который работает), и для меня это кажется потрясающим. Однако я не могу понять, что делает этот код. Для того, чтобы воспроизвести его, я вроде написал тестовый код:Индексирование массива python numpy. Как это работает?
import numpy as np
# Create a random array which represent the 6 unique coeff.
# of a symmetric 3x3 matrix
x = np.random.rand(10, 10, 6)
Итак, у меня есть 100 симметричных матриц 3x3 и я только хранить уникальные компоненты. Теперь я хочу создать полную матрицу 3x3, и именно здесь происходит волшебство.
indices = np.array([[0, 1, 3],
[1, 2, 4],
[3, 4, 5]])
Я вижу, что это делает. Вот как компоненты индекса 0-5 должны быть расположены в матрице 3x3, чтобы иметь симметричную матрицу.
mat = x[..., indices]
Эта линия меня потеряла. Таким образом, он работает над последним измерением массива x, но мне совершенно не ясно, как выполняется перестановка и перестройка, но это действительно возвращает массив формы (10, 10, 3, 3). Я поражен и смущен!
Мой ответ на этот вопрос: http://stackoverflow.com/questions/10921893/numpy-sorting-a-multidimensional-array-by-a-multidimensional-array/10922358#10922358 может помочь. – user545424
Я начал писать ответ, но обнаружил, что в основном повторяю [эту ссылку] (http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#integer-array-indexing). Если ссылка не ясна, возможно, обновите свой вопрос той частью, которую вы не понимаете, и мы можем вам помочь. –