gpt4 book ai didi

python - numpy loadtxt 单行/行作为列表

转载 作者:行者123 更新时间:2023-12-03 13:55:24 28 4
gpt4 key购买 nike

我有一个只有一行的数据文件,例如:

 1.2  2.1  3.2

我使用 numpy 版本 1.3.0 loadtxt 来加载它
 a,b,c = loadtxt("data.dat", usecols(0,1,2), unpack=True)

输出是浮点数而不是数组
 a = 1.2

我希望它会是:
 a = array([1.2])

如果我读取一个包含多行的文件,它就可以工作。

最佳答案

发生的事情是,当您加载数组时,您会获得一维数组。当你打开它时,它会得到一组数字,即没有维度的数组。这是因为当你解压一个数组时,它的维数会减一。从一维数组开始,它归结为一个简单的数字。
如果您测试 a 的类型,它不是浮点数,而是 numpy.float,它具有数组的所有属性,但形状为 void 元组。所以它是一个数组,只是不表示为一个。
如果你需要的是一个只有一个元素的一维数组,最简单的方法是在解包之前 reshape 你的数组:

#note the reshape function to transform the shape
a,b,c = loadtxt("text.txt").reshape((-1,1))
这会给你预期的结果。正在发生的事情是将它重新塑造成一个二维数组,这样当你打开它时,维数会减少到一。
编辑:
如果您需要它在多维数组中正常工作并在读取一维数组时保持一维,我认为最好的方法是使用 loadtxt 正常读取并在第二阶段 reshape 您的数组,如果它们是则将它们转换为单维纯数
a,b,c = loadtxt("text.txt",unpack=True)
for e in [a,b,c]
e.reshape(e.shape if e.shape else (-1,))

关于python - numpy loadtxt 单行/行作为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528053/

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