Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在csv中写入多个numpy数组和字符串_Python_Arrays_Csv_Numpy - Fatal编程技术网

Python 在csv中写入多个numpy数组和字符串

Python 在csv中写入多个numpy数组和字符串,python,arrays,csv,numpy,Python,Arrays,Csv,Numpy,看起来很简单,但我失败了。我想将以下数组与其他字符串一起写入csv文件中的一行(即“\n”)。这些值应以分号分隔 我从列表创建数组 auth_list = ['5,2.6,5.23515389636e-11,0.00444005161574,0.0644299145707,0.04,0.0037037037037', '1,5.0,5.65187364062e-12,0.0,0.0605326876513,0.0,0.000740740740741'] aff_list = [(1, 0.003

看起来很简单,但我失败了。我想将以下数组与其他字符串一起写入csv文件中的一行(即
“\n”
)。这些值应以分号分隔

我从列表创建数组

auth_list = ['5,2.6,5.23515389636e-11,0.00444005161574,0.0644299145707,0.04,0.0037037037037', '1,5.0,5.65187364062e-12,0.0,0.0605326876513,0.0,0.000740740740741']
aff_list = [(1, 0.003105590062111801), (1, 0.001838235294117647)]
comm_list = ['', '4,17.5,0.00584085856718,0.0002890919969,0.278790504782,0.0140752484561,0.0029973357016,0.00044404973357', '0,0.0,0.000218693005322,3.33471210416e-07,0.232075228649,0.0,0.000222024866785,0.0', '0,0.0,0.00025235732634,6.73003774237e-07,0.233652374653,0.0428571428571,0.000555062166963,0.0']
我继续把它们变成数组

import numpy
auth_array = numpy.genfromtxt(auth_list, delimiter=",")
aff_array = numpy.array(aff_list) # Here I don't have to use numpy.genfromtext, don't know why
auth_array = numpy.genfromtxt(aff_list, delimiter=",")
这些数组已经没有逗号了。我使用

auth_mean = numpy.mean(auth_array, axis=0)
aff_mean = numpy.mean(aff_array, axis=0)
comm_mean = numpy.mean(comm_array, axis=0)
title = "Happy New Year"
使用
打印
,我在终端中看到

auth_mean = [  3.00000000e+00   3.80000000e+00   2.90017063e-11   2.22002581e-03
          6.24813011e-02   2.00000000e-02   2.22222222e-03]
aff_mean = [ 1.          0.00247191]
comm_mean = [  1.33333333e+00   5.83333333e+00   2.10396963e-03   9.66994906e-05
          2.48172703e-01   1.89774638e-02   1.25814091e-03   1.48016578e-04]
数组总是具有相同的维度

output_text = title + str(auth_mean).strip('[]') + ";" + str(com_mean).strip('[]') + ";" + str(aff_mean).strip('[]') + "\n"
output_file = open(output_file_name, 'w')
output_file.write(output_text)
output_file.close()
屈服

  Happy New Year;3.00000000e+00   3.80000000e+00   2.90017063e-11   2.22002581e-03
  6.24813011e-02   2.00000000e-02   2.22222222e-03;  1.33333333e+00   5.83333333e+00   2.10396963e-03   9.66994906e-05
  2.48172703e-01   1.89774638e-02   1.25814091e-03   1.48016578e-04; 1.          0.00247191
我怎样才能画一条简单的直线呢

Happy New Year;3.00000000e+00;3.80000000e+00;2.90017063e-11;2.22002581e-03;6.24813011e-02;2.00000000e-02;2.22222222e-03;1.33333333e+00;5.83333333e+00;2.10396963e-03;9.66994906e-05;2.48172703e-01;1.89774638e-02;1.25814091e-03;1.48016578e-04;1.;0.00247191

我添加了逗号来分隔三个列表的元素(如上面MERose所查询的),并且我还必须初始化输出文件名:
output\u file\u name=“output.csv”

我希望这不是一个愚蠢的问题,但您是否可以在打开“word wrap”的文本编辑器中检查输出的文件?我运行了代码,得到了您需要的一行输出。如果我在Notepad++中打开“word wrap”查看该文件,它似乎位于多行上,而实际上只有一行


仅供参考:输出的文件也很好地导入到LibreOffice Calc中。

首先,您在代码中忘记了逗号,我认为它是:

title = "Happy New Year"
auth = [  3.00000000e+00,   3.80000000e+00,   2.90017063e-11,   2.22002581e-03,
          6.24813011e-02,   2.00000000e-02,   2.22222222e-03]
aff = [ 1.  ,        0.00247191]
comm = [  1.33333333e+00,   5.83333333e+00,   2.10396963e-03,   9.66994906e-05,
          2.48172703e-01,   1.89774638e-02,   1.25814091e-03,   1.48016578e-04]
关于这个问题: 可以使用以下方法将多个阵列合并为一个阵列:

然后可以用分号连接此行:

str_row = ';'.join(map(str, out))
print(str_row)  #or write to file, if you need

但是,我强烈建议您不要重新发明轮子,不要使用标准来编写任何csv文件。您可以指定
“;”作为分隔符。

为什么它们在数组中没有逗号?不知道。我使用
numpy.mean(..,axis=0)
从我使用
numpy.genfromtxt(..,delimiter=“,”)
从列表创建的数组创建数组。列表当然是逗号分隔的,但数组不是。在这种情况下,您应该在问题中添加
numpy
标记,以便numpy专家注意到它。(我不是Numpy专家)完成了。可能是numpy转换的问题。不,我没有忘记逗号。我从终端复制了输出。但我会查一查itertools的。您从终端输出复制了它,而不是从代码源。最后一个代码块(在“产量”之后)来自csv文件。Wrod wrap处于禁用状态。我真的得到了多行输出。您是如何添加逗号来分隔列表的?我只是手动添加了它们。抱歉,我的回答有点过火了——在你发布之前,我回答说数组起源于numpy,而我假设它们是标准python列表。
str_row = ';'.join(map(str, out))
print(str_row)  #or write to file, if you need