У меня есть этот код для нейронной сетевой библиотеки Я стройСамый быстрый способ перебора списка/коллекции объектов в Cython?
for connection in self.backwardConnections:
self._z += connection.value()
где connection
является cdef class Connection
и backwardConnections
является питоном list
соединений.
У меня есть два вопроса
- Какой самый быстрый итерация по списку Python? (Я мог бы также сделать это с типичным
for int i in range (len (..))
) - Если я откажусь от подхода списка python, какой тип коллекции (например, массив numpy, C++-векторы и т. Д.) Мог бы содержать объекты
Connection
и повысить производительность?
Вы делаете больше математики с этим списком значений? Если это так, вы можете создать массив «numpy» и работать над этим. например 'Values.sum()'. 'numpy' также имеет быстрый итератор' nditer', который работает в 'cython. – hpaulj
@hpaulj Вещь 'connection.value()' определяется как 'self.weight * self.source.y', где' source' является 'Neuron',' y' и 'weight'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Я в основном строю график сетей, использующих нейроны как узлы и соединения как вершины. На то, что я мог сделать, это иметь 2 cpp-вектора указателей на 'w' и 'y' s, которые можно перебирать со скоростью c. –