Найти - Пользователи
Полная версия: python , numpy сортировка массива numpy.ndarray
Начало » Python для новичков » python , numpy сортировка массива numpy.ndarray
1
birst
Добрый день,
Подскажите пожалуйста как отсортировать по убыванию\возрастанию массив такого типа.
При попытке 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() но почему то не работает как надо, может что то делаю не так.
Заранее спасибо.
doza_and
Свой код приведите
>>> import numpy as np
>>> v=np.array([1,3,2])
>>> v.sort()
>>> v
array([1, 2, 3])
birst
doza_and
Свой код приведите
пробовал просто argsort(drr), не работает, дело в том что массив crr это матрица значений, а индексы координаты, при решейпе два индекса (позиция в матрице) преобразуются в один плоский, с возможностью обратного преобразования.
например
x, y = np.unravel_index(drr,crr.shape)
Так вот уже в одномерном массиве, если использовать простой сорт как вы говорите упорядовачиваются только значения.
Я пока нашел только одно решение, есть функция minmaxloc находить бОльшее значение(в сrr), выбирать его и записывать 0 например.
doza_and
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 поэтому производительность не пострадает.

Попробуйте написать так чтобы было понятно что вы хотите получить, а то получается не ответ а сплошные фантазии с моей стороны.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB