2013-02-11 2 views
0

У меня есть массив A, содержащий список nvec 3D-векторы, A.shape==(nvec,3). Я хочу, чтобы изменить порядок строк из A в соответствии с нормами векторов:переупорядочить список векторов по норме

norm=numpy.square(A).sum(axis=1) 
rank=numpy.argsort(norm) 

Я попытался A[rank,:], но это дает мне ошибку.

ответ

1

Просто удалите второй индекс:

A[rank] 
+0

Arggg, оказывается, A [ранг] не работает, я думаю, потому что А не является объектом numpy.ndarray, а объект h5py._hl.dataset.Dataset , Я наивно думал, что могу применить к нему всевозможные преобразования numpy. Самое забавное, что numpy.square и numpy.argsort действительно сработали. – jmborr

+0

начать с 'A = numpy.array (A)' –

+0

Да, A [ранг], безусловно, работает после «каста» на объект numpy.ndarray. Благодарю y'all !!! – jmborr

Смежные вопросы