Mit a
als Datenarray Setzen und idx
als die Anordnung von Indizes, so dass jede Zeile eines Element entspricht, in den Daten festgelegt werden Array, könnten Sie tun -
a[tuple(idx.T)] = 5
Probelauf -
In [94]: a = np.zeros((2,2,3),dtype=int)
In [95]: idx = np.array([[0,0,0],[1,1,0],[0,1,2]])
In [96]: a[tuple(idx.T)] = 5
In [97]: a
Out[97]:
array([[[5, 0, 0],
[0, 0, 5]],
[[0, 0, 0],
[5, 0, 0]]])
In [98]: a[tuple(idx.T)] = [5,10,15] # or set different values
In [99]: a
Out[99]:
array([[[ 5, 0, 0],
[ 0, 0, 15]],
[[ 0, 0, 0],
[10, 0, 0]]])
Alternativ
, könnten wir die lineare Indizes mit np.ravel_multi_index
berechnen und führen Sie dann die Zuordnung mit np.put
, wie so -
np.put(a,np.ravel_multi_index(idx.T,a.shape),5)
Wenn Sie mit dreidimensionalen Feldern zu tun hat, konnten wir die dreidimensionale Indizes in Scheiben schneiden und zuordnen haben eine andere Methode, wie so -
a[idx[:,0],idx[:,1],idx[:,2]] = 5
Wenn es nur ein Element ist erforderlich eingestellt werden, gerade tun -
a[tuple(idx)] = 5
Probelauf -
In [118]: a = np.zeros((2,2,3),dtype=int)
In [119]: idx = np.array([0,0,0])
In [120]: a[tuple(idx)] = 5
In [121]: a
Out[121]:
array([[[5, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0]]])
Sie können auch eine Liste (nicht als numpy.array) verwenden: 'Array [0, 0, 0] = 5' nur gesetzt, die erste Null bis 5. – Lucas