Необычная форма массива numpy

#python #numpy #matplotlib #contourf

#python #numpy #matplotlib #контур

Вопрос:

Я пытаюсь отобразить раздел геофизики с помощью контурной карты в matplotlib. Я почти получаю желаемый результат, за одним исключением, он отображается из нижнего левого угла. Визуализированный раздел геофизики

Поскольку это сечение от поверхности, то 0 — это уровень поверхности, а 2000 — глубина в наносекундах. Это означает, что эта контурная карта должна отображаться из верхнего левого угла.

 CS = plt.contourf(x, y, amplitude, 25, cmap='jet', vmin=0, vmax=127)
 

Я думаю, что я понимаю проблему. Мои данные считываются из двоичного файла, где каждый снимок представляет собой список значений от поверхностного до самого глубокого значения в каждой заданной точке. Итак, мой 2D-массив похож:

 1st shot [[65, 29, 56, 98, 82, 14,...],
2nd shot  [24, 54, 48, 41, 74, 37,...],
3rd shot  [34, 12, 18, 44, 87, 64,...]]
N shot....
 

Есть ли способ изменить его, как:

 [[65, 24, 34],
 [29, 54, 12],
 [56, 48, 18],
 [98, 41, 44],
 [82, 74, 87],
 [14, 37, 64]]
 

Таким образом, если y инвертирует значения y (чтобы быть отрицательными), я мог бы получить желаемый результат — 0 в верхнем левом углу.

Я знаю, как это сделать на простом python, но есть ли эффективный способ в numpy?

Ответ №1:

Если данные D представляют собой массив numpy 2D,

 D = D.T
 

этого можно добиться простым переносом.