通过键访问numpy数组元素

时间:2020-01-10 14:55:39

标签: python numpy indexing

是否有通过(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>

1 个答案:

答案 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]都会引发错误。

相关问题