Я использую ndarray, чтобы нарезать другой ndarray. Обычно использую arr[ind_arr]
. numpy
, похоже, это не нравится, и он поднимает FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated use arr[tuple(seq)] instead of arr[seq]
.
В чем разница между arr[tuple(seq)]
и arr[seq]
?
Другие вопросы по StackOverflow, похоже, связаны с этой ошибкой в scipy
и pandas
, и большинство людей предполагает, что ошибка связана с конкретной версией этих пакетов. Я столкнулся с предупреждением, работающим исключительно в numpy
.
Примеры сообщений:
FutureWarning с distplot в seaborn
Предупреждение о воспроизведении MWE:
import numpy as np
# generate a random 2d array
A = np.random.randint(20, size=(7,7))
print(A, '\n')
# define indices
ind_i = np.array([1, 2, 3]) # along i
ind_j = np.array([5, 6]) # along j
# generate index array using meshgrid
ind_ij = np.meshgrid(ind_i, ind_j, indexing='ij')
B = A[ind_ij]
print(B, '\n')
C = A[tuple(ind_ij)]
print(C, '\n')
# note: both produce the same result