Доступ к элементам массива numpy по ключу - PullRequest
0 голосов
/ 10 января 2020

Есть ли простой способ получить доступ к элементам массива по (строковому) ключу, а также по индексу? Предположим, у меня есть такой массив:

x = array([[0, 4, 9, 1],
           [1, 3, 9, 1],
           [3, 5, 6, 2],
           [6, 2, 7, 5]])

Я ищу способ указать набор ключей (например, ('A', 'C', 'G', 'T')), которые можно использовать в качестве псевдонима для индекса. Так что x['A', 'C'], x[0,'C'], x['A', 1] и x[0,1] все возвращают значение 4; x['G', :] совпадает с x[2, :] и т. Д. Я знаю, что это может быть достигнуто путем создания подкласса массива numpy и переопределения __getitem__ и __setitem__, но создание подклассов очень быстро усложняется, поэтому мне было интересно, существует ли более простой или лучший способ сделать это.

1 Ответ

1 голос
/ 10 января 2020

Вы можете использовать pandas DataFrame:

import numpy as np
import pandas as pd

x = np.array([[0, 4, 9, 1],
              [1, 3, 9, 1],
              [3, 5, 6, 2],
              [6, 2, 7, 5]])
df = pd.DataFrame(x)


df.columns = df.index = ['A', 'C', 'G', 'T']

df

   A  C  G  T
A  0  4  9  1
C  1  3  9  1
G  3  5  6  2
T  6  2  7  5

df.loc['A', 'C'] # loc for location
4

или

df.iloc[0,1] # iloc for index location
4

Однако вы не можете получить доступ к элементам, используя смешанный синтаксис, а именно df.loc[0, 'C'], df.iloc[0, 'C'], df.loc['A',1] и df.iloc['A', 1] вызовут ошибку.

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