0
0 комментариев

Пусть имеется многомерный массив:

arr = numpy.arange(24).reshape(2,3,4)

Хочется получить из него одномерный массив, причем индексы элементов массива arr, которые должны присутствовать в новом массиве, приведены в списке:

ind = [(0, 1, 1), (1, 2, 3), (0, 2, 2)]

При этом, если пробовать обращаться по отдельности к элементам списка ind, то результат будет ожидаемым и желаемым:

arr[ind[0]] == 5
arr[ind[1]] == 23
arr[ind[2]] == 10

А вот если попробовать сразу создать массив следующим образом:

new_arr = arr[ind]

Выдаст ошибку IndexError

Можно, конечно, поступить иначе:

new_arr = numpy.array([])
for j in ind:
    new_arr = numpy.append(new_arr, arr[j])

И получить желаемый массив

new_arr == [5, 23, 10]

Однако, непонятно почему появляется ошибка IndexError, ведь в одномерном случае всё прекрасно работает:

arr_1d = numpy.arange(9)
ind_1d = [1, 3, 7, 4]
 
new_arr_1d = arr_1d[ind_1d]
new_arr_1d == [1, 3, 7, 4]


Добавить комментарий