248 Stimmen

Numpy - Zeile zu Array hinzufügen

Wie kann man Zeilen zu einem Numpy-Array hinzufügen?

Ich habe ein Array A:

A = array([[0, 1, 2], [0, 2, 0]])

Ich möchte Zeilen aus einem anderen Array X zu diesem Array hinzufügen, wenn das erste Element jeder Zeile in X eine bestimmte Bedingung erfüllt.

Numpy-Arrays haben keine Methode "append" wie die von Listen, zumindest scheint es so.

Wenn A und X Listen wären, würde ich einfach tun:

for i in X:
    if i[0] < 3:
        A.append(i)

Gibt es eine numpythonisch Wie kann man das Gleiche tun?

Danke, S ;-)

8voto

naman1994 Punkte 265
import numpy as np
array_ = np.array([[1,2,3]])
add_row = np.array([[4,5,6]])

array_ = np.concatenate((array_, add_row), axis=0)

5voto

RAno Punkte 119

Ich verwende 'np.vstack', das schneller ist, EX:

import numpy as np

input_array=np.array([1,2,3])
new_row= np.array([4,5,6])

new_array=np.vstack([input_array, new_row])

4voto

Elyas Karimi Punkte 272

Ich benutze numpy.insert(arr, i, the_object_to_be_added, axis) zum Einfügen object_to_be_added in der i-ten Reihe (axis=0) oder Spalte (axis=1)

import numpy as np

a = np.array([[1, 2, 3], [5, 4, 6]])
# array([[1, 2, 3],
#        [5, 4, 6]])

np.insert(a, 1, [55, 66], axis=1)
# array([[ 1, 55,  2,  3],
#        [ 5, 66,  4,  6]])

np.insert(a, 2, [50, 60, 70], axis=0)
# array([[ 1,  2,  3],
#        [ 5,  4,  6],
#        [50, 60, 70]])

Zu alte Diskussion, aber ich hoffe, sie hilft jemandem.

3voto

user2475529 Punkte 250

Wenn Sie die Konstruktion in einem einzigen Vorgang durchführen können, dann ist so etwas wie die Antwort vstack-with-fancy-indexing ein guter Ansatz. Wenn Ihre Bedingung jedoch komplizierter ist oder Ihre Zeilen spontan eintreffen, sollten Sie das Array vergrößern. Der numpythonische Weg, so etwas zu tun - ein Array dynamisch wachsen zu lassen - ist eigentlich, eine Liste dynamisch wachsen zu lassen:

A = np.array([[1,2,3],[4,5,6]])
Alist = [r for r in A]
for i in range(100):
    newrow = np.arange(3)+i
    if i%5:
        Alist.append(newrow)
A = np.array(Alist)
del Alist

Listen sind für diese Art von Zugriffsmustern hochgradig optimiert. In Listenform haben Sie keine bequeme mehrdimensionale Indizierung von Numpy, aber solange Sie anhängen, gibt es kaum etwas Besseres als eine Liste von Zeilenarrays.

2voto

Charles Chow Punkte 977

Sie können verwenden numpy.append() um eine Zeile an numpty array anzuhängen und später in eine Matrix umzuformen.

import numpy as np
a = np.array([1,2])
a = np.append(a, [3,4])
print a
# [1,2,3,4]
# in your example
A = [1,2]
for row in X:
    A = np.append(A, row)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X