Seite 1 von 1

Mengenoperationen auf Numpy-arrays

Verfasst: Mittwoch 14. März 2007, 17:16
von heraklit
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

Verfasst: Mittwoch 14. März 2007, 18:20
von 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.

Verfasst: Donnerstag 15. März 2007, 00:13
von heraklit
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