至少就你所得到的错误而言,它就像是说:你试图输出3列,但只提供两种格式。如果你改变你的 fmt arg到类似的东西 fmt=['%10s', '%10s', '%10.3f'] , 然后 np.savetxt 应该管用。
fmt
fmt=['%10s', '%10s', '%10.3f']
np.savetxt
您可能会遇到其他错误,例如与您尝试保存的阵列的格式/内容有关的错误。为了回避任何此类潜在错误,您可能还需要临时在脚本中添加一行,如:
print(lista_final[:100])
就在之前 np.savetxt 线。这样,你可以确保内容 lista_final (至少在前100行中)实际上是您在尝试处理数组之前所期望的 savetxt 。
lista_final
savetxt
你打电话的时候 np.concatenate((lista_final, lista_numpy_temporaria)) 在代码末尾附近,您最终将所有3列强制转换为单个标准Numpy数组。标准数组只能有一个 dtype 因此,包括最后一列中的浮点数在内的所有内容最终都会转换为字符串。您可以通过将列连接到记录数组(每列可以具有不同的dtype)来避免这种情况。假设您尝试在脚本末尾汇总的三个列数组如下所示:
np.concatenate((lista_final, lista_numpy_temporaria))
dtype
one = np.array(["u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'", "u'espacializacao_2_1994_D1'"], dtype=object) two = np.array(["u'Abiai'", "u'Camaratuba'", "u'Curimatau'", "u'Gramame'", "u'Guaju'", "u'Jacu'", "u'Mamanguape'", "u'Miriri'", "u'Paraiba'", "u'Piranhas'", "u'Trairi'"], dtype=object) three = np.array([111.81740046, 328.11316935, 273.32344897, 223.45285225, 393.62130737, 312.91506958, 289.06595205, 564.86507416, 330.80016107, 328.95194289, 333.04579163])
然后,您将它们连接在一个记录数组中,然后将它们写入a csv 像这样的文件:
csv
rarr = np.rec.fromarrays([one, two, three]) np.savetxt('arcgis.csv', rarr, fmt=['%s', '%s', '%f'], delimiter=";")
我找到的解决方案是使用CSV文件读写库。
我刚刚在“import csv”开头添加了库,然后在代码中添加了以下行。
首先,在乞讨中,我需要设置文件目录以保存数据。
#Opening the file to save the data write_path = main_directory + "\\Dados\\Exportados\\" + "file_name" + ".csv" file = open(write_path, 'a') writer = csv.writer(file)
'a'参数允许您追加到文件的末尾
然后,在我想要保存数据的步骤中,我添加了以下行:
#Writing to the file writer.writerow([mes_pelo_nome, ano_pelo_nome, dia_pelo_nome, mascara, media])
最后,我添加了以下行来关闭文件:
file.close()