В numpy к любому ndarray можно получить доступ, указав кортеж целых чисел. Таким образом, если мы построим массив произвольных размеров и заполним его, используя формулу, основанную на индексах элемента, получить доступ к элементу будет просто, предоставив кортеж с индексами элемента:
< pre class="lang-py Prettyprint-override">
Код: Выделить всё
import numpy as np
a = np.zeros((5,4,3,2))
def ivalue(index):
return (index[0]-index[3])/(index[1]+index[2]+1)
for index, _ in np.ndenumerate(a):
a[index] = ivalue(index)
index = (0,3,2,1)
print(a[index]) // -1/6
В lua относительно легко построить тот же массив. Например
Код: Выделить всё
a = {}
for i=1, 5 do
a[i] = {}
for j=1, 4 do
a[i][j] = {}
for k=1, 3 do
a[i][j][k] = {}
for l=1, 2 do
a[i][j][k][l] = (i-l)/(j+k-1)
end
end
end
end
io.write(a[1][4][3][2]) -- -1/6
Но теперь предположим, что нам нужно написать программу, в которой по индексам мы хотим вернуть значение; в numpy это просто, поскольку (пока index соответствует структуре массива) мы можем написать [index] и все готово. Но в lua я не могу придумать, как по заданному index={1,4,3,2} я мог бы получить сохраненное значение. В родном Python та же проблема, поэтому я подумал, что, возможно, существует расширение lua, которое работает с индексами многомерных массивов.
Подробнее здесь:
https://stackoverflow.com/questions/789 ... onal-array