numpy.savetxt- 将一列保存为 int,将其余列保存为 float?
numpy.savetxt- Save one column as int and the rest as floats?
问题
所以我有一个二维数组(151 行,52 列),我想使用 np.savetxt 保存为文本文件。但是,我希望第一列的数字保存为整数(1950、1951 等),而其余数据保存为精度 5(如果四舍五入则为 4)浮点数(2.7419、2.736 等)。我不知道该怎么做。
代码
当我打印数组输出的前 4 行和 3 列时,它看起来像这样。
[[ 1950.2.7407 2.7396]
[ 1951. 2.7419 2.736 ]
[ 1952. 2.741 2.7374]
[ 1953.2.7417 2.7325]]
当我使用以下...
np.savetxt('array.txt',data,fmt="%1.4f")
数组将第一列保存为精度为 5 的浮点数,与其余数据(1950.0000、1951.0000 等)一样。当我尝试指定不同的格式时...
np.savetxt('array.txt',data,fmt="%i %1.4f")
我收到以下错误:"ValueError: fmt has wrong number of % formats: %i %1.4f"
问题
有没有一种方法可以将第一列保存为整数,将其余列保存为浮点数?
data
有 3 列,因此您需要提供 3 '%format'
。例如:
np.savetxt('array.txt', data, fmt='%i %1.4f %1.4f')
应该可以。如果你有很多超过 3 列,你可以尝试这样的东西:
np.savetxt('array.txt', data, fmt=' '.join(['%i'] + ['%1.4f']*N))
其中 N
是需要浮点格式的列数。
您的 fmt
参数需要与您尝试格式化的列具有相同数量的 %
。您正在尝试格式化 3 列,但只给它 2 种格式。
尝试将您的 np.savetxt(...)
更改为
np.savetxt('array.txt',data,fmt="%i %1.4f %1.4f")
作为@wflynny 但没有加入:
np.savetxt('array.txt', data, fmt='%i'+' %1.4f'*N)
在我的例子中,我的数据矩阵的列是自动连接的,这是我不想要的。
要使格式与单独的列保持一致,您可以添加分隔符“;”。
解决方案如下所示:
np.savetxt('array.txt',data,fmt='%i' + ';%1.4f' * 4)
p.s。我保存为 .csv
问题
所以我有一个二维数组(151 行,52 列),我想使用 np.savetxt 保存为文本文件。但是,我希望第一列的数字保存为整数(1950、1951 等),而其余数据保存为精度 5(如果四舍五入则为 4)浮点数(2.7419、2.736 等)。我不知道该怎么做。
代码
当我打印数组输出的前 4 行和 3 列时,它看起来像这样。
[[ 1950.2.7407 2.7396]
[ 1951. 2.7419 2.736 ]
[ 1952. 2.741 2.7374]
[ 1953.2.7417 2.7325]]
当我使用以下...
np.savetxt('array.txt',data,fmt="%1.4f")
数组将第一列保存为精度为 5 的浮点数,与其余数据(1950.0000、1951.0000 等)一样。当我尝试指定不同的格式时...
np.savetxt('array.txt',data,fmt="%i %1.4f")
我收到以下错误:"ValueError: fmt has wrong number of % formats: %i %1.4f"
问题
有没有一种方法可以将第一列保存为整数,将其余列保存为浮点数?
data
有 3 列,因此您需要提供 3 '%format'
。例如:
np.savetxt('array.txt', data, fmt='%i %1.4f %1.4f')
应该可以。如果你有很多超过 3 列,你可以尝试这样的东西:
np.savetxt('array.txt', data, fmt=' '.join(['%i'] + ['%1.4f']*N))
其中 N
是需要浮点格式的列数。
您的 fmt
参数需要与您尝试格式化的列具有相同数量的 %
。您正在尝试格式化 3 列,但只给它 2 种格式。
尝试将您的 np.savetxt(...)
更改为
np.savetxt('array.txt',data,fmt="%i %1.4f %1.4f")
作为@wflynny 但没有加入:
np.savetxt('array.txt', data, fmt='%i'+' %1.4f'*N)
在我的例子中,我的数据矩阵的列是自动连接的,这是我不想要的。 要使格式与单独的列保持一致,您可以添加分隔符“;”。 解决方案如下所示:
np.savetxt('array.txt',data,fmt='%i' + ';%1.4f' * 4)
p.s。我保存为 .csv