首页 > 解决方案 > 访问同构行主要 NumPy 数组中的行时如何提高可读性?

问题描述

我的代码中有一个 a 的概念trajectory。它由N空间中的点组成,每个点有 7 条数据,s(路径长度)、xyz(位置)和txtytz(切向量)。我想将这些数据存储在numpy.array. Numpy 默认是行优先的,我希望这些标签中的每一个都是一行,以实现最佳访问。这是因为我通常不会访问单个点,而是主要对每一行(sx等)作为一个整体进行操作。

我能做的就像trajectory = np.zeros((7, N))然后通过做访问每一行trajectory[6]然后计算我想要的。但是我讨厌这是多么难以理解。我根本没有发现基于索引的原始访问是可读的,当我查看一个 numpy 表达式并看到这些基于索引的访问负载执行一些计算时,我的眼睛会呆滞。那么显而易见的事情就是以某种方式使用名称访问它们。我查看了结构化数组,但这些更多用于异构数据类型,结构在内存中对齐,因此例如ztx将彼此相邻,这不符合我想要的精神。你可以说,让它们完全是不同的数组(即 7 个​​不同的数组),但是我会失去一些很好的操作,将它们视为单个数组是有意义的。

那么是否有可能在 numpy 中为同质数据提供更多人类可读的数组访问?如果不完全正确,那么在没有等的情况下制作更具可读性的 numpy 代码的常见解决方案是什么y = x[1] + x[4] * x[3]

标签: pythonarraysnumpy

解决方案


推荐阅读