Mengenoperationen auf Numpy-arrays

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
heraklit
User
Beiträge: 31
Registriert: Donnerstag 8. März 2007, 16:50

Hallo,
ich habe ein kurze Frage zum numpy Paket.
from numpy import *
...
#Bm sei Numpy-array und J ein Integer

B_x = set(self.Bm) & set(range(self.J))
B_y = array(list(set(self.Bm) - B_x))
Der Quellcode ist meiner Meinung nach recht umständlich, vor allem die Konvertierung set -> list -> array. Daher wollte ich euch fragen, ob obiger Code einfacher (z.B. mit entsprechenden Befehlen aus dem Numpy-Paket) formuliert werden kann.

Viele Grüße
BlackJack

Mit Funktionen aus `numarray` weiss ich jetzt nicht, aber man kann das dort wirklich recht umständliche Filtern von Zahlen mit Nachkommawerten die nicht zwischen 0 und J-1 liegen, auch einfacher lösen:

Code: Alles auswählen

In [54]: Bm = numarray.array((1, 20, 2.3, 4))

In [55]: J = 10

In [56]: numarray.array([x for x in Bm if 0 <= x < J and x % 1 == 0])
Out[56]: array([ 1.,  4.])
Falls sich in `Bm` grundsätzlich nur ganze Zahlen befinden und/oder nur Positive, kann man die Filterbedingung natürlich entsprechend vereinfachen.
heraklit
User
Beiträge: 31
Registriert: Donnerstag 8. März 2007, 16:50

Hallo,
erstmal danke für die Antwort. Bin aber mittlerweile auf die Befehle intersect1d und ähnliche aus dem numpy paket gestoßen, nur zur Info
mfg
Antworten