如何强制numpy.genfromtxt始终生成二维数组以保持数据结构一致性?
如何让numpy.genfromtxt始终生成二维数组?
示例文本输入文件:
35.6 45.1 21.2 34.1 30.3 29.3
使用numpy.genfromtxt(input_file, delimiter=' ')加载时,会得到二维数组:
[[35.6 45.1] [21.2 34.1] [30.3 29.3]]
但如果输入文件仅有一行数据(比如35.6 45.1),加载后会得到一维数组[35.6 45.1],而非预期的二维数组[[35.6 45.1]]。怎么强制numpy不管输入是1行还是多行,都生成二维数组?
解决方法
方法1:使用ndmin参数(推荐)
genfromtxt内置ndmin参数,直接设置为2即可强制生成至少二维的数组,这是最直接的方式:
import numpy as np data = np.genfromtxt(input_file, delimiter=' ', ndmin=2)
方法2:用np.atleast_2d()转换
加载数据后,用np.atleast_2d()包裹结果,自动将一维数组转为二维,二维数组保持不变:
data = np.atleast_2d(np.genfromtxt(input_file, delimiter=' '))
方法3:固定列数时用reshape调整
如果已知输入每行的列数固定(比如示例中的2列),可以用reshape(-1, 列数)来强制调整维度,-1会自动计算行数:
data = np.genfromtxt(input_file, delimiter=' ') data = data.reshape(-1, 2)
内容的提问来源于stack exchange,提问作者Matrix
相关产品推荐
相关产品推荐

