gpt4 book ai didi

python - 如何将 numpy recarray 的子集转换为连续数组?

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:31 25 4
gpt4 key购买 nike

我有一个来自读取 csv 文件的 recarray。我有兴趣将列的子集转换为连续的 float 组。我想避免将它们转换为列表或将它们一一堆叠。我尝试了 https://stackoverflow.com/a/11792956 中的建议和 https://stackoverflow.com/a/7842620但我明白了

ValueError: new type not compatible with array.

这是我的代码:

a = np.recfromcsv(r"myfile.csv")
#a has many columns of type int, float or string. I want to extract those called coeff*
coeffs_columns = [n for n in a.dtype.names if n.startswith('coeff')]
coeffs_recarray = a[coeffs_columns]
newtype=[(n,'<f8') for n in coeffs_columns]
b = coeffs_recarray.astype(newtype)
#b is:
#array((0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), dtype=[('coefficients00', '<f8'), ('coefficients1', '<f8'), ('coefficients2', '<f8'), ('coefficients3', '<f8'), ('coefficients4', '<f8'), ('coefficients5', '<f8'), ('coefficients6', '<f8'), ('coefficients7', '<f8'), ('coefficients8', '<f8'), ('coefficients9', '<f8'), ('coefficients100', '<f8'), ('coefficients11', '<f8'), ('coefficients12', '<f8'), ('coefficients13', '<f8'), ('coefficients14', '<f8')])
coeffs = b.view('<f8')

“有趣”的是,如果我只提取一列,或者如果我使用创建为

recarray
x = np.array([(1.0, 2,7.0), (3.0, 4, 9.9)], 
dtype=[('x', '<f8'), ('y', '<f8'), ('z', '<f8')])

转换有效。

最佳答案

Numpy 提供 numpy.ascontiguousarray .

此函数返回其输入数组在内存中的一个连续数组(C 顺序)。这在处理数组上的非连续 View 时特别有用。

如果需要 Fortran 命令,请使用 numpy.asfortranarray .

关于python - 如何将 numpy recarray 的子集转换为连续数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29629157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com