Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 14, 2013 12:02:19

birst
От:
Зарегистрирован: 2007-09-13
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

python , numpy сортировка массива numpy.ndarray

Добрый день,
Подскажите пожалуйста как отсортировать по убыванию\возрастанию массив такого типа.
При попытке array.sort() или array.revers() получаю следю ошибку
AttributeError: ‘numpy.ndarray’ object has no attribute ‘reverse’
Этот массив я получаю от функции crr = cv2.matchTemplate(arr,brr, cv.CV_TM_CCORR)
дальше делаю решейп drr = np.reshape(crr, crr.shape*crr.shape)
задача упорядочить drr массив по убыванию. Не преобразовывая в другой тип. Пробовал функцию argsort() но почему то не работает как надо, может что то делаю не так.
Заранее спасибо.



Офлайн

#2 Фев. 14, 2013 21:46:06

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

python , numpy сортировка массива numpy.ndarray

Свой код приведите

>>> import numpy as np
>>> v=np.array([1,3,2])
>>> v.sort()
>>> v
array([1, 2, 3])



Офлайн

#3 Фев. 15, 2013 09:33:07

birst
От:
Зарегистрирован: 2007-09-13
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

python , numpy сортировка массива numpy.ndarray

doza_and
Свой код приведите
пробовал просто argsort(drr), не работает, дело в том что массив crr это матрица значений, а индексы координаты, при решейпе два индекса (позиция в матрице) преобразуются в один плоский, с возможностью обратного преобразования.
например
x, y = np.unravel_index(drr,crr.shape)
Так вот уже в одномерном массиве, если использовать простой сорт как вы говорите упорядовачиваются только значения.
Я пока нашел только одно решение, есть функция minmaxloc находить бОльшее значение(в сrr), выбирать его и записывать 0 например.



Отредактировано birst (Фев. 15, 2013 09:33:45)

Офлайн

#4 Фев. 15, 2013 17:57:09

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

python , numpy сортировка массива numpy.ndarray

doza_and
Свой код приведите
Т.е. приведите НЕБОЛЬШОЙ участок РАБОТАЮЩЕГО кода который иллюстрирует вашу проблему.
Опишите что должно получиться и что реально получается.
birst
Не преобразовывая в другой тип
Добавлю что непонятно что вы хотите получить:
birst
если использовать простой сорт как вы говорите упорядовачиваются только значения

Так вы вроде и хотите отсортировать.


Как должен упорядочится?
[[1,2],[3,4]]
Почему нельзя преобразовывать в другой тип? По соображениям производительности?

import numpy as np
v=np.array([[1,3,2],[1,3,2]])
vv=v.ravel()
vv.sort()
print v
>>> 
[[1 1 2]
 [2 3 3]]

ravel и sort работают inplace поэтому производительность не пострадает.

Попробуйте написать так чтобы было понятно что вы хотите получить, а то получается не ответ а сплошные фантазии с моей стороны.



Отредактировано doza_and (Фев. 15, 2013 18:00:02)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version