2016-09-22 3 views
1

Wie füge ich ein einzelnes Element in ein Array auf numpy ein. Ich weiß, wie man mit dem Parameter insert und axis eine ganze Spalte oder Zeile einfügt. Aber wie füge ich ein/expandiere um eins.Einfügen eines Elements in eine Matrix

Zum Beispiel sagen, ich habe ein Array:

1 1 1 
1 1 1 
1 1 1 

Wie füge I 0 (auf der gleichen Zeile), sagen wir auf (1, 1) Ort, sagen:

1 1 1 
1 0 1 1 
1 1 1 

ist das machbar? Wenn ja, dann wie Sie das Gegenteil tun (auf der gleichen Spalte), sagen:

1 1 1 
1 0 1 
1 1 1 
    1 
+2

Die Dinge, die Sie erstellen möchten, sehen für mich nicht wie Matrizen aus. –

+0

ok Ich denke, man könnte sagen, seine Arrays – user1179317

+1

Was Sie _trying_ tun müssen --- wie in, was ist Ihr Gesamtziel? Wahrscheinlichkeiten sind, entweder wird Ihr Ziel nicht durch eine chaotische Datenstruktur wie das geholfen, oder es ist _is_ und NumPy ist nicht das rechte Werkzeug für den Job. (Aber ich bin bereit, überrascht zu werden.) –

Antwort

3

Numpy hat etwas, das aussieht wie zerlumpten Arrays, aber das sind Arrays von Objekten, und wahrscheinlich nicht das, was Sie wollen. Beachten Sie den Unterschied in der folgenden:

In [27]: np.array([[1, 2], [3]]) 
Out[27]: array([[1, 2], [3]], dtype=object) 

In [28]: np.array([[1, 2], [3, 4]]) 
Out[28]: 
array([[1, 2], 
     [3, 4]]) 

Wenn Sie v in Zeile/Spalte i/j einfügen möchten, können Sie dies tun, indem Sie die anderen Reihen Polsterung. Dies ist einfach zu tun:

In [29]: a = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]]) 

In [30]: i, j, v = 1, 1, 3 

In [31]: np.array([np.append(a[i_], [0]) if i_ != i else np.insert(a[i_], j, v) for i_ in range(a.shape[1])]) 
Out[31]: 
array([[1, 1, 1, 0], 
     [1, 3, 1, 1], 
     [1, 1, 1, 0]]) 

Um Pad entlang von Spalten, Zeilen nicht, zuerst a transponiert, dann diesen Vorgang ausführen, dann wieder umsetzen.

-1

Ich glaube, Sie append() von regelmäßigen Python-Arrays verwenden sollten (nicht numpy) Hier ein kurzes Beispiel ist

A = [[1,1,1], 
    [1,1,1], 
    [1,1,1]] 
A[1].append(1) 

Das Ergebnis ist

[[1, 1, 1], 
[1, 1, 1, 1], 
[1, 1, 1]] # like in your example 

Säulenverlängerung mit einem Element nicht möglich ist, da die Werte von Zeilen gespeichert sind. Technisch können Sie so etwas tun A.append([None,1,None]), aber das ist schlechte Praxis.

Verwandte Themen