是否有通过(string)键和索引访问数组元素的简便方法? 假设我有一个像这样的数组:
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__
来实现,但是子类化很快变得很复杂,因此我想知道是否有更简单或更好的方法来做到这一点。 / p>
答案 0 :(得分:1)
您可以使用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]
都会引发错误。