Я могу воспроизвести предупреждение с:
In [313]: x = np.zeros((4,2))
In [315]: x[:,1]
Out[315]: array([0., 0., 0., 0.])
Заменив :
на slice(None)
, мы можем записать это индексирование как:
In [316]: x[[slice(None),1]]
/usr/local/bin/ipython3:1: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
#!/usr/bin/python3
Out[316]: array([0., 0., 0., 0.])
Это действительно должен быть кортеж, а не список:
In [317]: x[(slice(None),1)]
Out[317]: array([0., 0., 0., 0.])
In [318]: x[tuple([slice(None),1])]
Out[318]: array([0., 0., 0., 0.])
Предупреждение говорит нам о том, что формат списка был нормальным, но в будущем приведет к ошибке.
Я ничего не вижу в вашем коде, который делает подобный фрагмент в индексации списка.
data
из genfromtxt
является структурированным массивом, поэтому индексирование по имени поля является нормальным: data["column_1"]
. Таким образом, вполне вероятно, что предупреждение генерируется в коде plot
. Но мы понятия не имеем, где. Предупреждение не дает никакой трассировки стека ошибок, не так ли?
Таким образом, без образца массива, например data
, или CSV-файла, например Example.csv
, мы не сможем воспроизвести предупреждение и копать дальше.
Для начала я бы поставил что-то вроде print
между каждой строкой вашего кода. Цель состоит в том, чтобы определить, какой matplotlib
вызов вызывает предупреждение.
Если, например, он производится в
host.set_xlim([data["column_1"][0], data["column_1"][-1]])
Я мог бы попробовать изменить этот вызов на
host.set_xlim((data["column_1"][0], data["column_1"][-1]))
или
host.set_xlim(data["column_1"][0], data["column_1"][-1])
Это немного дикое предположение ...
редактировать
FutureWarning: Использование последовательности без кортежей для многомерной индексации не рекомендуется использовать `arr [tuple (seq)]`
Эта последняя версия SO помогает нам определить проблемную функцию в пакете scipy.stats
. Он создает список фрагментов и использует его без дальнейшего преобразования в кортеж.