Wie lässt sich am einfachsten eine numpige Boolesche Array-Darstellung einer Ganzzahl erzeugen? Zum Beispiel, Karte 6
zu np.array([False, True, True], dtype=np.bool)
.numpy Boolesche Array-Darstellung einer Ganzzahl
Antwort
Wenn n
das ist Integer, der Ausdruck (n & (1 << np.arange(int(floor(log(n, 2) + 1))))) > 0
erzeugt ein boolesches Array, das die Bits darstellt, wobei das niedrigstwertige Bit an der ersten Position steht.
Zum Beispiel
In [224]: n = 5
In [225]: from math import floor, log
In [226]: n = 5
In [227]: (n & (1 << np.arange(int(floor(log(n, 2) + 1))))) > 0
Out[227]: array([ True, False, True], dtype=bool)
In [228]: n = 8
In [229]: (n & (1 << np.arange(int(floor(log(n, 2) + 1))))) > 0
Out[229]: array([False, False, False, True], dtype=bool)
In [230]: n = 514
In [231]: (n & (1 << np.arange(int(floor(log(n, 2) + 1))))) > 0
Out[231]: array([False, True, False, False, False, False, False, False, False, True], dtype=bool)
Clever! Ich gebe tatsächlich das 'm = int (floor (log (n, 2) + 1))', also ist diese Lösung für mich die kürzeste. –
Verwenden Sie zuerst , um die binäre Darstellung des ganzzahligen Werts zu erhalten. Denken Sie daran, hier die Bitbreite anzugeben, die Sie für Ihr Bit-Array wünschen. Ich habe einen Weg enthalten, um programmgesteuert die Anzahl der Bits zu bestimmen, erforderlich, um die gegebene Ganzzahl darstellen:
>>> n = 5
>>> bin_n = bin(n)
'0b101'
>>> smallest_length = n.bit_length()
3
>>> bin_array = np.binary_repr(5, width=smallest_length)
bin_array = '101'
dann in umgekehrter Reihenfolge der Bits in der Ausgabe Binärstring:
>> reversed_bin_array[::-1]
reversed_bin_array = '101'
Dann endlich Um ein Array von Bits mit der zuvor angegebenen Bitbreite zu erhalten, verwenden Sie bitarray
. Ich habe festgestellt, dass das bitarray
Objekt ein sehr nützliches Mittel ist bequem zu speichern und arbeitet auf Bit-Arrays:
>>> bitarray('11110010') # from a string
Ich hoffe, das hilft, glücklich Codierung!
'np.invert' kehrt die Reihenfolge der Bits nicht um. – user2357112
Wow ... was habe ich gedacht? Nun, repariere es. Sieht das besser aus @ user2357112 –
Sortieren von, aber Sie haben einen verweilenden Verweis auf die Reihenfolge der Bits, die "bereits durch den vorherigen Schritt umgekehrt". Es sieht auch so aus, als ob der Fragesteller die kleinste erforderliche Breite automatisch berechnen möchte, anstatt eine Breite manuell anzugeben, und der Vollständigkeit halber sollten Sie wahrscheinlich zeigen, wie Sie das NumPy-Array, um das der Fragesteller gebeten wird, erhalten. – user2357112
Vielleicht ist es nicht die einfachste, aber eine kompakte Art und Weise ist
from numpy import array array([i for i in bin(5)[2:]]) == '1'
hier ein Ansatz ist mit np.binary_repr
und np.fromstring
-
np.fromstring(np.binary_repr(num), dtype=np.uint8)==49
Probelauf -
In [39]: num
Out[39]: 17
In [40]: np.fromstring(np.binary_repr(num), dtype=np.uint8)==49
Out[40]: array([ True, False, False, False, True], dtype=bool)
- 1. Boolesche Spalte in Ganzzahl konvertieren
- 2. Wie man (einfach) eine Ganzzahl und float gemischte numpy Array
- 3. JavaScript: Erhalten Sie 90% einer Ganzzahl auf die nächste Ganzzahl?
- 4. Generieren einer 2-stelligen Ganzzahl
- 5. Ändern einer Ganzzahl in Java
- 6. Formatieren einer Ganzzahl als oktal
- 7. Ganzzahl aus einer Liste extrahieren
- 8. Vergleiche boolesche WHERE-Prädikate gegen boolesche Werte
- 9. C++ Erstellen einer 2D Boolesche Matrix
- 10. Boolesche Logik in einer Lenker-Vorlage
- 11. Boolesche Operatoren in einer switch-Anweisung?
- 12. Boolesche Rekursionsmethode
- 13. Boolesche Typen
- 14. Numpy - Berechnungsprodukt einer Diagonalen
- 15. Was bedeutet ein Punkt nach einer Ganzzahl in Python?
- 16. Boolesche vs Tinyint (1) für boolesche Werte in MySQL
- 17. Boolesche Operationen auf scipy.sparse-Matrizen
- 18. Test 2 Boolesche Arrays
- 19. Boolesche Funktoren in Lisp
- 20. Get (Spalte, Zeile) Index von NumPy-Array, die eine boolesche Bedingung erfüllt
- 21. Boolesche Funktionsargumente und Rückkehr
- 22. Modulo mit einer negativen Ganzzahl in C++
- 23. Finden der Primzahl einer Ganzzahl mit C++
- 24. Subsetting ein data.frame mit einer Ganzzahl-Matrix
- 25. Ersetze die letzten Ziffern einer Ganzzahl
- 26. Entfernen von Nullen vom Ende einer Ganzzahl
- 27. Dezimale Darstellung einer Ganzzahl in R
- 28. Lesen einer Ganzzahl aus der Standardeingabe
- 29. NumberFormatException beim Analysieren einer Ganzzahl in Geschwindigkeit
- 30. Elemente in einer ListBox-Ganzzahl geben Wert
Diese Frage hat leider keine brauchbaren Antworten: http://stackoverflow.com/questions/22773443/built-in-function-in-numpy-to-interpret-an-integer -to-an-array-of-boolean-values –
Was ist falsch mit der akzeptierten Antwort auf die Frage, die Sie verknüpft haben? Ich entschuldige mich, wenn ich etwas nicht richtig lese, aber die akzeptierte Antwort auf diese Frage scheint ziemlich genau zu skizzieren, wie genau das zu tun ist, was Sie verlangen. –
@VladislavMartin Ich muss meine ganze Zahl in ein Array von 'np.int8' konvertieren, was hässlich ist, und die Ausgabe setzt die höchstwertigen Bits zuerst und gruppiert die Bits in Gruppen von 8 - beides sind Dinge, die ich nicht will. –