你可以编写一个继承自
np.ndarray
的子类。但是,保持维度和名称之间的对应关系可能会很棘手。
class NamedArray(np.ndarray):
def __new__(cls, *args, **kwargs):
obj = np.ndarray(args[0], **kwargs).view(cls)
return obj
def __init__(self, *args, **kwargs):
self.dim_names = None
if len(args) == 2:
self.dim_names = args[1]
def sum(self, *args, **kwargs):
if (self.dim_names is not None) and (type(kwargs['axis']) == str):
axis_name = kwargs.pop('axis')
axis_ind = self.dim_names.index(axis_name)
kwargs['axis'] = axis_ind
return super().sum(*args, **kwargs)
a = NamedArray([1,2,3], dtype=np.float32)
b = NamedArray([1,2,3], ('d1', 'd2', 'd3'), dtype=np.float32)
编辑:
Pandas DataFrame 现在已经非常接近原帖中所要求的内容了。
DI
定义为字符串吗?如果你在代码中将DI = 2
,那么你就可以使用np.sum(a, axis=DI)
... - jorgeca