Saya memiliki array python numpy n x m. Nilai array ini berkisar antara 0 dan 10 yang bertepatan dengan indeks array numpy 1D (panjang array 1D = 11, jadi 0-10) . Array 1D ini menyimpan nilai abritary. Sekarang saya ingin mengganti nilai indeks array 2D saya dengan nilai yang sesuai dari array 1D.

Bagaimana saya bisa melakukan ini?

Salam Norksen

-1
Norksen 6 Juli 2020, 01:08

1 menjawab

Jawaban Terbaik

It's straightforward with numpy: result = values_1d[arr_idxs_2d]

Lihat:

>>> import numpy as np
>>> imin, imax = 0, 9

>>> values_1d = np.random.randn(imax+1)
>>> values_1d
array([-0.80355548,  1.00645905, -1.17436992, -1.52008027,  0.73544379,
       -0.72175806, -0.69933584, -0.50195895, -0.04588092,  0.86542796])

>>> arr_idxs_2d = np.random.randint(imin, imax, (4, 5))                                              

>>> arr_idxs_2d
array([[6, 7, 4, 3, 1],
       [8, 8, 3, 7, 7],
       [1, 1, 5, 3, 2],
       [6, 2, 3, 6, 8]])

>>> values_1d[arr_idxs_2d]
array([[-0.69933584, -0.50195895,  0.73544379, -1.52008027,  1.00645905],
       [-0.04588092, -0.04588092, -1.52008027, -0.50195895, -0.50195895],
       [ 1.00645905,  1.00645905, -0.72175806, -1.52008027, -1.17436992],
       [-0.69933584, -1.17436992, -1.52008027, -0.69933584, -0.04588092]])
0
paime 6 Juli 2020, 00:27