2013-11-20 7 views

Antwort

27

einfachste Weg:

a = np.array([1 + 2j, 5 + 7j]) 
a = np.insert(a, 0, 0) 

Dann:

>>> a 
array([ 0.+0.j, 1.+2.j, 5.+7.j]) 

Beachten Sie, dass dies ein neues Array erstellt, ist es nicht wirklich einsetzen 0 in das ursprüngliche Array.

gibt es mehrere Alternativen zu np.insert, die alle auch ein neues Array erstellen:

In [377]: a 
Out[377]: array([ 1.+2.j, 5.+7.j]) 

In [378]: np.r_[0, a] 
Out[378]: array([ 0.+0.j, 1.+2.j, 5.+7.j]) 

In [379]: np.append(0, a) 
Out[379]: array([ 0.+0.j, 1.+2.j, 5.+7.j]) 

In [380]: np.concatenate([[0], a]) 
Out[380]: array([ 0.+0.j, 1.+2.j, 5.+7.j]) 

In [381]: np.hstack([0, a]) 
Out[381]: array([ 0.+0.j, 1.+2.j, 5.+7.j]) 

In [382]: np.insert(a, 0, 0) 
Out[382]: array([ 0.+0.j, 1.+2.j, 5.+7.j]) 
8

Eine Alternative ist "horizontaler Stapel" (auch ein neues Array erstellt):

np.hstack((0,a)) 
+2

Diese doppelt so schnell scheint, als Einsatz für meine Test 100 Elementanordnung – xioxox

+0

ich folgende Fehlermeldung angezeigt: Valueerror: alle Eingabefelder haben die gleiche Anzahl von Dimensionen müssen – lacrima

+0

@Iacrima Ihrer 'a' Array ist wahrscheinlich> = 2 Dimensionen ..... benutze 'a.ndim' um' a.shape' zu ​​überprüfen – atomh33ls

2

Auch Wenn Sie ein n-dimensionales Array haben, müssen Sie auch die Achse angeben, andernfalls wird es flacher:

np.insert(my_array, 0, myvalue, axis=1) 
-1

Außerdem, wenn Sie n Zeilen mit Nullwerten hinzufügen möchten. Sie können einen Null-Array erstellen und verwenden hstack:

zero_array = np.zeros([n]) 
new = np.hstack([zero_array,old_array]) 
0

ich alle fünf verschiedene Methoden timed ein Element am Anfang eines Arrays einzusetzen. Hier sind die Ergebnisse:

In [20]: %timeit np.hstack([1, [1, 2, 3]]) 
10000 loops, best of 3: 30.4 µs per loop 

In [21]: %timeit np.insert([1, 2, 3], 0, 1) 
10000 loops, best of 3: 46.6 µs per loop 

In [22]: %timeit np.r_[[1], [1, 2, 3]] 
10000 loops, best of 3: 32.8 µs per loop 

In [28]: %timeit np.append(1, [1, 2, 3]) 
10000 loops, best of 3: 23.4 µs per loop 

In [29]: %timeit np.concatenate([[1], [1, 2, 3]]) 
The slowest run took 6.43 times longer than the fastest. This could mean that an intermediate result is being cached. 
100000 loops, best of 3: 8.79 µs per loop