Я думаю, что вам лучше написать свой класс с нуля, а не расширять numpy.ndarray
Мои причины:
- Поскольку вы будете работать с нечисловымииндексы, вы, вероятно, собираетесь ограничить себя одномерными структурами.Это означает, что вы будете полностью игнорировать все многомерные возможности
numpy.ndarray
s. numpy.ndarray
имеют некоторые ограничения, такие как тот факт, что все элементы должны иметь одинаковый размер байта.Эти ограничения могут вас не устраивать.
Кроме того, вы, возможно, захотите взглянуть на структурированные массивы numpy , так как они также могут индексироваться нечисловыми индексами (ну, в определенном ограниченном смысле, на самом деле - пожалуйста, ознакомьтесь с приведенными там примерами.
Просто любопытно, какая у вас желаемая функциональность и семантика : В numpy, если x
и y
- это два 1d numpy массива одинаковой длины, вам разрешено сравнивать их с x == y
.С другой стороны, если data_1
и data_2
- это два из ваших массивов, имеющих одинаковую длину 3
, они все равно могут индексироваться по-разному.data_1
может быть проиндексировано со значениями индекса 'red'
, 'green'
и 'blue'
, тогда как data_2
может быть проиндексировано со значениями 'high'
, 'medium'
, 'low'
.В обоих случаях число допустимых индексов равно 3
, поэтому в некотором смысле оба значения data_1
и data_2
имеют одинаковую длину 3. Но тогда вы сочтете целесообразным сравнить их с * 1039?*?Как насчет массива логических значений, полученных в результате сравнения?Вы бы проиндексировали логический массив с 'red'
, 'green'
и 'blue'
или с 'high'
, 'medium'
, 'low'
?