2015-12-29 3 views
-1

Я хочу связать методы объектов с dtypes в многоуровневом структурированном массиве. Это базовое состояние экземпляра объекта моей коллекции объекта уже упаковано в numpy (вложенный dtype) record_arrays .. У меня уже есть набор объектов Python, которые построены поверх представлений этих типов numty structured array, которые затем работать с данными, лежащими в основе данных инкапсулированных объектов. То есть: Я желаю использовать объектно-ориентированные методы программирования, работая с базовым состоянием экземпляра в его собственном упакованном, структурированном формате.
-> В настоящее время, работая с этими многоуровневыми структурированными массивами с использованием методов объектов Python, требуется, чтобы явным образом создавал экземпляр объекта Python поверх связанного с ним массива каждый раз, когда я повторно ссылаюсь на него в массиве. Возможно ли возможно более прямое ассоциировать методы объекта с многоуровневым структурированным массивом (вложенным) dtype, чтобы избежать необходимости восстанавливать экземпляр объекта каждый раз?Как связать методы с (вложенными) numpy dtype?

ответ

2

Ваше описание в замешательстве. Некоторый базовый код может помочь сделать его более ясным. Но я выскажу некоторые возможные наблюдения.

A numpy массив имеет (большой) непрерывный буфер данных (плоский список байтов), который он делит на «записи». 'shape' и 'strides' используются для записи записей. 'dtype' определяет, как он «просматривает» каждую запись.

Хотя эти массивы являются объектами типа Python, а dtype также является классом, в целом программисты с несколькими числами не прикладывают больших усилий для создания классов объектов добавленного массива. Массивами могут быть атрибуты более крупных объектов (словари, списки, кортежи или пользовательские классы).

matrix и masked_arrays являются примерами подкласса ndarray. Я не видел много пользовательских подклассов; отчасти потому, что объем работы, чтобы сделать их полностью работоспособными, не стоит того. recarray - это подкласс, который позволяет вам получать доступ к полям структурированного массива с синтаксисом атрибутов. Возможно, стоит посмотреть на его метод «getattr». Получение общих операций с массивами для возврата правильного класса или подкласса массива является немного сложным.

np.lib.index_tricks определяет несколько классов, которые позволяют использовать синтаксис индексации в месте синтаксиса функции (то есть они определяют пользовательские методы __getitem__).

Мне не известны способы подкласса dtype. Наиболее общим базовым dtype является «объект». Это просто хранит указатель на объект Python, который хранится в другом месте. Этот указатель может указывать на что угодно - число, None, список, другой массив и т. Д. В структурированных массивах dtype является составным типом, состоящим из «списка» подтипов (которые могут быть вложенными). Но в конечном итоге структурированный тип dtype состоит из нескольких базовых типов (ints, float, strings, object).

+0

Пример кода на пути должен быть опубликован где-то завтра .. –

Смежные вопросы