Numpy和Scipy都有许多有用的函数来执行对数据的操作(例如,积分、傅里叶变换、基线校正等)。但是,我还没有看到关于将X数据输入到这些函数中的一般形式的文档。假设我有一个光谱的波长和吸光度值,或应力和应变数据从一个力学性能测试。
一般情况下:
当您拥有XY数据时,这种情况会如何改变呢?
XY数据最通用的数据结构是什么,它允许我直接将数据输入到这些函数中,而不需要重新定义如何存储数据?
发布于 2016-08-10 20:57:03
检查每个包和操作类或函数的文档。scipy是一个包集合,由不同的人编写,通常为更老的Fortran或C包提供接口。因此输入格式受到这些源的限制。它们也取决于什么是适合这个问题的。
通常,在规则网格上生成值是很方便的。例如,使用np.meshgrid或np.mgrid与arange或linspace值一起定义2d空间。结果可以是32d数组-- x和y值,以及作为这些值的函数的z。
但现实世界的数据往往可以作为散点点使用。然后,每个点都是一个x,y位置,其中包含一个z值。您不能将这些转换为2d数组,至少在没有插值的情况下是不能的。因此,三个一维数组是合适的表示形式。或者一个(n, 3)矩阵,每个变量都有一列。或者,如果值有不同的dtype --比如x和y的整数,z的float,那么是一个包含3个字段的结构化数组。
数据通常是从csv文件中加载的--表示这些x,y,z值的列,可能带有字符串标签和多个z值。由于数据类型的混合,它们通常被加载到genfromtxt中,从而形成了一个一维结构化数组。
从结构化数组映射到具有统一dtype的多个数组很容易。有时,您只需使用字段名进行索引,其他情况可能需要一个view。
要深入了解这一点,您可能需要扩展数据类型和需要使用的包。
http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html#scipy.interpolate.griddata。interpolate.griddata演示了点数据和网格数据的使用。
发布于 2021-01-05 14:36:58
虽然这不是你的问题的答案,但是要知道,如果你只使用两个或三个维度,你可以很容易地从一个标准切换到另一个标准。
XYZ = np.column_stack((X, Y, Z))和X, Y, Z = XYZ.tranpose().
通常,与其他数据分析相比,它们都是相当便宜的操作。
https://stackoverflow.com/questions/38882257
复制相似问题