Мне интересно, знает ли кто-нибудь быстрый способ получить элементы двумерного массива из списка заданных индексов?
Следующий код делает то, что я хочу, но мне интересно, есть ли какой-нибудь более быстрый способ выполнить операцию в цикле в приведенном ниже коде? Я ищу команду типа array [wantedIndices] вместо цикла в приведенном ниже коде.
import numpy as np
np.random.seed(1)
x = np.arange(0, 1+.1, .25)
y = np.arange(0, 1+.1, .25)
x, y = np.meshgrid(x,y)
print('\n x \n', x,)
index = [(np.random.randint(0, high=len(x)), np.random.randint(0, high=len(x))) for i in range(len(x))]
print('\n index \n', index)
for indexNumber in range(len(index)):
print('\n index[%d]:' %indexNumber, index[indexNumber], '\n x[index[%d]] \n' %indexNumber, x[index[indexNumber]])
Приведенный выше код дает следующий вывод:
x
[[0. 0.25 0.5 0.75 1. ]
[0. 0.25 0.5 0.75 1. ]
[0. 0.25 0.5 0.75 1. ]
[0. 0.25 0.5 0.75 1. ]
[0. 0.25 0.5 0.75 1. ]]
index
[(3, 4), (0, 1), (3, 0), (0, 1), (4, 4)]
index[0]: (3, 4)
x[index[0]]
1.0
index[1]: (0, 1)
x[index[1]]
0.25
index[2]: (3, 0)
x[index[2]]
0.0
index[3]: (0, 1)
x[index[3]]
0.25
index[4]: (4, 4)
x[index[4]]
1.0