2017-03-20 7 views
-1

Ich habe eine einfache numpy Array mit Form (4, 2) A erstellt.Logische Indizierung - numpy.where in C++

import numpy as np 
A = np.array([[1, 2], 
       [2, 2], 
       [3, 2], 
       [4, 2]]) 

Ich wollte den Index der Zeilen erhalten, wo die erste Spalte 2 und 3, also tat ich:

indices = np.where((A[:, 0] == 2) | (A[:, 0] == 3))[0] 

dies tun bekam ich ein Array mit zwei Elementen (1 und 2) , was ich wollte.

Jetzt möchte ich dies in C++ effizient tun. Gibt es eine Möglichkeit, dies mit Eigen zu tun? Ich möchte For Loops vermeiden.

Danke.

Antwort

2

Vermeiden von for Schleifen in NumPy ist bewundernswert. Aber alles, was Sie dort tun, ist, die Schleifen in den niedrigeren Code zu schieben, der in C oder Fortran implementiert ist.

Es gibt einfach keine Notwendigkeit Schleifen in C++ zu vermeiden. Im Gegensatz dazu sind Schleifen der eindeutige und offensichtliche Weg, um dieses Problem in C++ zu lösen. Also benutze Schleifen. Sie sind blitzschnell.