Während keine formale Antwort, würde Ich mag Ihre Neugier holen und Sie eine Welt der Möglichkeiten von Ihrer Frage, die sie machen vorstellen. Wenn Sie numpy aus irgendeinem Grund nicht verwenden möchten und Sie sich nur fragen, wie Sie die Summe aller Elemente in einer Liste in nur einer Zeile zusammenfassen, sollten Sie die Operation zwischen Listen neu definieren. Dies kann durch die Definition eine sehr einfache Klasse wie die folgenden erreicht werden:
class array():
def __init__(self, mylist):
self.list = mylist
return
def __add__(self, other):
for i in xrange(len(self.list)):
self.list[i] += other.list[i]
return array(self.list)
def __repr__(self):
return "%s" % (self.list)
Sie können sehen, dass die Klasse instanziiert wird eine Python-Liste verwenden, und dann definiere ich die __add__
Methode, die im Wesentlichen an, wie die Array Objekte interagieren unter dem Symbol +. Natürlich gibt es hier viel Platz, um es zu verbessern und nach Ausnahmen zu suchen, aber dies soll nur die Tatsache hervorheben, dass Sie definieren können, was Sie wollen. Sie können sehen, dass das Hinzufügen von zwei Array-Objekten ein neues Array-Objekt zurückgibt, das wir hinzufügen können.
für Sie zu sehen, wie es funktioniert, unten ich ein sehr einfaches Beispiel schreiben:
A = array([1,2,3,4,5])
B = array([3,2,4,5,6])
C = A+B
Dann, wenn Sie C in der Eingabeaufforderung eingeben, werden Sie
[4, 4, 7, 9, 11]
die wiedersehen ist eine Array-Klasse.
Dies (Vektorisierung) ist einer der Hauptgründe für die Verwendung von "numpy over" -Listen bei der Durchführung von arthetischen Tests. Soweit ich weiß, können Sie dies nicht in nativem Python tun, ohne eine for-Schleife oder ein Listenverständnis aufzurufen. Aus Neugier, warum willst du für solche Operationen außerhalb von Numpy arbeiten? –
Wenn ich numpy.asarray auf einer Objektliste verwende, kann ich die Argumente der Objekte auf dem numpy.array direkt vektorisieren? Es sagt mir AttributeError: 'numpy.ndarray 'Objekt hat kein Attribut' r ' – Phaune
@Phaune, was Sie tun müssen, ist 3 numpy Arrays zu erstellen, eine für jede Eigenschaft, tun Sie die vektorisierte Operation (die viel effizienter sein wird) und legen Sie dann die Werte in der ursprünglichen Liste von Objekten. –