我有几个数据数字文件,其中小数点分隔符是逗号。所以我使用 lambda 函数进行转换:

import numpy as np
def decimal_converter(num_cols):
    conv = dict((col, lambda valstr: \
    float(valstr.decode('utf-8').replace(',', '.'))) for col in range(nb_cols))
    return conv

data = np.genfromtxt("file.csv", converters = decimal_converter(3))

文件中的数据是这样的:
0; 0,28321815;  0,5819178
1; 0,56868281;  0,85621369
2; 0,24022026;  0,53490058
3; 0,63641921;  0,0293904
4; 0,65585546;  0,55913776

在这里使用我的函数 decimal_converter 我需要指定我的文件包含的列数。通常我不需要指定 numpy.genfromtxt 文件中的列数,它需要它找到的所有内容。即使使用转换器选项,我也想保留此功能。

最佳答案

由于 genfromtxt() 接受迭代器,您可以传递应用转换函数的迭代器,然后您可以避免使用 converters 参数:

import numpy as np

def conv(x):
    return x.replace(',', '.').encode()

data = np.genfromtxt((conv(x) for x in open("test.txt")), delimiter=';')

关于python - numpy genfromtxt 转换器未知的列数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22970854/

10-12 22:26