2016-02-04 3 views
-2

Я помещаю данные в массивы numpy для сравнения. Они способ хранят данные, иногда размеры не соответствуют порядку. Например, если первый массив имеет форму (10, 20, 30, 40), иногда второй массив будет иметь форму (10, 20, 40, 30). Можно предположить, что длины размерностей будут единственными.Выравнивание N-мерных массивов numpy

Есть ли простой способ преобразовать форму второго массива в форму первого, не зная заранее, сколько измерений или длины измерений? Я думаю, что могу сделать это с помощью длинной серии заявлений elif и операций переноса, но я надеюсь, что есть более чистый метод.

+0

Когда вы говорите «преобразовать форму», что именно вы хотите сделать? Например, вы можете просто сказать 'second.reshape (first.shape)'. Это сделает это, или вы хотите что-то еще? – tom10

+0

Вы можете изменить вторую форму на основе первой формы. 'Second_array.reshape (frist_array.shape)' – Kasramvd

ответ

0

Используйте shape.index, чтобы найти, где каждая ось должна быть, а затем использовать транспонирование, чтобы изменить порядок осей:

import numpy as np 
A = np.ones((10, 20, 40, 30)) 
B = np.ones((10, 20, 30, 40)) 

new_order = [A.shape.index(i) for i in B.shape] 
B = B.transpose(new_order) 
Смежные вопросы