Самый быстрый поиск в массиве 2d для значений больше 0 - PullRequest
0 голосов
/ 19 мая 2018

Вот мой код:

    if frame is not None: self.x, self.y = np.where(frame > 0)

в основном его значения поиска больше 0, но он работает как всегда, и мне нужно, чтобы он делал это по крайней мере 10 раз в секунду для массива 480x640.Если это помогает, это всегда только несколько из этих пунктов.Я присоединяю весь свой класс, может быть, кто-то улучшит его: (вот после редактирования)

import numpy as np


class Rect:
def __init__(self):
    self.rect = [(0, 0), (0, 0)]
    self.draw = False
    self.x = []
    self.y = []

def count_rect(self):
    self.rect[0] = (self.y[0], self.x[0])
    element, index = max(list(zip(self.y, range(len(self.y)))))
    self.rect[1] = (element + 20, self.x[index] + 150)
    self.draw = True

def points(self, frame):
    if frame is not None: self.x, self.y = np.where(frame > 0)
    if len(self.x) != 0 and len(self.y) != 0: self.count_rect()
    else: self.draw = False

В идеале функция np.where () должна останавливаться на первом результате, затем идти с конца и делать то же самое

1 Ответ

0 голосов
/ 19 мая 2018

Вы пытались использовать функцию where?

https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.where.html

Возвращает индекс с координатами x, y с точками, которые удовлетворяют вашим условиям.например:

import numpy as np

#being A  your NxM array

index = np.where(A > o)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...