Element-weise String Verkettung in numpy

Ist das ein Fehler?

import numpy as np a1=np.array(['a','b']) a2=np.array(['E','F']) In [20]: add(a1,a2) Out[20]: NotImplemented 

Ich versuche, elementweise String-Verkettung zu machen. Ich dachte, Add () war der Weg, es in Numpy zu tun, aber offensichtlich funktioniert es nicht wie erwartet.

4 Solutions collect form web for “Element-weise String Verkettung in numpy”

Dies geschieht mit numpy.core.defchararray.add . Hier ist ein Beispiel:

 >>> import numpy as np >>> a1 = np.array(['a', 'b']) >>> a2 = np.array(['E', 'F']) >>> np.core.defchararray.add(a1, a2) array(['aE', 'bF'], dtype='<U2') 

Für NumPy-Datentypen stehen weitere nützliche Zeichenfolgenoperationen zur Verfügung.

Sie können die chararray Unterklasse verwenden , um Array-Operationen mit Strings auszuführen:

 a1 = np.char.array(['a', 'b']) a2 = np.char.array(['E', 'F']) a1 + a2 #chararray(['aE', 'bF'], dtype='|S2') 

Ein weiteres schönes Beispiel:

 b = np.array([2, 4]) a1*b #chararray(['aa', 'bbbb'], dtype='|S4') 

Dies kann (und sollte) im reinen Python gemacht werden, da numpy auch die Python-String-Manipulationsfunktionen intern verwendet:

 >>> a1 = ['a','b'] >>> a2 = ['E','F'] >>> map(''.join, zip(a1, a2)) ['aE', 'bF'] 

Eine andere Lösung besteht darin, String-Arrays in Arrays von Python von Objekten umzuwandeln, so dass str.add heißt:

 >>> import numpy as np >>> a = np.array(['a', 'b', 'c', 'd'], dtype=np.object) >>> print a+a array(['aa', 'bb', 'cc', 'dd'], dtype=object) 

Dies ist nicht so langsam (weniger als doppelt so langsam wie Hinzufügen von ganzzahligen Arrays).

  • Wie lösche ich alles nach einem bestimmten Zeichen in einer Zeichenfolge?
  • Wie kann man in Python 3.2 die Stichprobenprüfung unempfindlich machen?
  • Was ist ein sauberer Weg, um einen String Prozent zu einem Float zu konvertieren?
  • Python regex: Aufteilung auf Muster Match, die eine leere Zeichenfolge ist
  • Zählerscheinen von mehreren Teilstrings in einer Zelle Pandas
  • Wie schreibe ich eine Regex-Funktion in Python, die prüft, ob ein Benutzer nur Buchstaben und Zahlen hat?
  • Python-Äquivalent von Unix "Strings" Dienstprogramm
  • Multi-Split in Python
  • Leere Zeichenfolge aus der Liste entfernen
  • Entfernen Sie leere Zeichenfolgen aus einer Liste von Zeichenfolgen
  • Geben Sie den Wert eines Strings als Variablennamen ein
  • Python ist die beste Programmiersprache der Welt.