在Python中命名尺寸?

Fra*_*nen 5 python arrays numpy axes dimension

有一点我非常感激,那就是能够在 python 中命名数组中的维度。例如,我有一个 3 维的 numpy 数组,我经常需要沿着特定的维度对其进行求和。

所以我可以用 ndarray 来做a

sum(a, axis=2)
Run Code Online (Sandbox Code Playgroud)

如果我的相关维度是最后一个,但我想让它“位置无关”,即用户可以提供任何数组,只要他指定“此维度是“DI””(例如,对于“感兴趣的维度” )。所以基本上我希望能够写:

sum(a, axis="DI")
Run Code Online (Sandbox Code Playgroud)

接近 NETCDF,但我不想实现整个 netcdf 功能。

ask*_*han 3

@M456的想法很聪明,但是如果你对多个数组有相同的命名方案,我认为更简单的解决方案就是使用字典:

axes = { 'DA': 0, 'DB':1 }
a.sum(axes['DA'])
Run Code Online (Sandbox Code Playgroud)

甚至只是变量:

DA, DB, DC = range(3)
a.sum(DA)
Run Code Online (Sandbox Code Playgroud)

如果它应该是你的最后一个(或倒数第二个等)轴,只需使用-1(或-2等):

a.shape
#(2,3,4)

np.all(a.sum(2) == a.sum(-1))
#True
np.all(a.sum(0) == a.sum(-3))
#True
Run Code Online (Sandbox Code Playgroud)