Получение и настройка элементов np.array другим способом - PullRequest
0 голосов
/ 29 октября 2019

У меня есть 2D np.array.

array = np.array([[1, 2], [3, 4]])

У меня есть словарь.

element_ids = {1: (0, 1), 2: (1, 0), 3: (0, 0), 4: (1, 1)}

Я хочу написать класс, который позволил бы мне получать и устанавливать элементы массива как обычным способом

>> my_array = MyArray(array, element_ids)
>> my_array[0, 1]
1
>> my_array[0, 1] = 5
>> my_array[0, 1]
5

и используя идентификаторы из моего словаря

>> my_array[1, 0]
3
>> my_array.by_id(2)
3
>> my_array.by_id(2) = 7
>> my_array.by_id(2)
7
>> my_array[1, 0]
7

, в этом случае я хочу my_array.by_id(i) вести себя так, как будто я написал my_array[element_ids[i]]. Как я могу это сделать?

Я написал класс, который позволял бы получать элементы обоими способами

import numpy as np

class MyArray:
    def __init__(self, array, element_ids):
        self.array = array
        self.element_ids = element_ids

    def by_id(self, element_id):
        indices = self.element_ids[element_id]
        return self[indices]

    def __getitem__(self, key):
        i, j = key
        return self.array[i, j]


array = np.array([[1, 2], [3, 4]])
element_ids = {1: (0, 1), 2: (1, 0), 3: (0, 0), 4: (1, 1)}
my_array = MyArray(array, element_ids)

, но он не позволял бы мне устанавливать элементы. Как я могу заставить это работать? Если это невозможно, каковы наилучшие альтернативы, которые позволили бы получать и устанавливать элементы массива этими двумя различными способами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...