Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 将文件元素读入3个不同的数组_Python_Arrays_Csv_File Io - Fatal编程技术网

Python 将文件元素读入3个不同的数组

Python 将文件元素读入3个不同的数组,python,arrays,csv,file-io,Python,Arrays,Csv,File Io,我有一个用x,y,x的值分隔的文件。我需要可视化数据,所以我想我需要将文件读入3个单独的数组(X,Y,Z),然后绘制它们。如何将文件读入3个独立的数组?到目前为止,我有这样一个数组,它删除了每行末尾的空白元素 def fread(f=None): """Reads in test and training CSVs.""" X = [] Y = [] Z = [] if (f==None): print("No file given to

我有一个用x,y,x的值分隔的文件。我需要可视化数据,所以我想我需要将文件读入3个单独的数组(X,Y,Z),然后绘制它们。如何将文件读入3个独立的数组?到目前为止,我有这样一个数组,它删除了每行末尾的空白元素

def fread(f=None):
    """Reads in test and training CSVs."""
    X = []
    Y = []
    Z = []

    if (f==None):
        print("No file given to read, exiting...")
        sys.exit(1)

    read = csv.reader(open(f,'r'),delimiter = ' ')
    for line in read:
        line = line[:-1]
我尝试添加一些类似的内容:

for x,y,z in line:
    X.append(x)
    Y.append(y)
    Z.append(z)
但是我得到了一个类似“ValueError:太多的值无法解包”的错误

我在谷歌上做了很多搜索,但似乎没有解决必须将文件中的每个元素读入单独数组的问题

我应该添加的是,我的数据没有很好地按行/列排序,只是看起来像这样 “107745590026 2 0.02934046648 0.01023879368 3.331810236 2 0.02727724425 0.07867902517 3.319272757 2 0.01784882881”


谢谢

编辑:如果您的数据实际上没有被分成三行(而是一个长的以空格分隔的值列表),您可以使用python列表切片和跨步来简化这一过程:

X = read[::3]
Y = read[1::3]
Z = read[2::3]

发生此错误的原因可能是
read
中的某些行包含三个以上的空格分隔值。从你的问题中不清楚在这种情况下你到底想做什么。如果您使用的是python 3,则可以将行的第一个元素放入
X
,第二个元素放入
Y
,然后将该行的所有其余元素放入
Z
,如下所示:

for x, y, *z in line:
    X.append(x)
    Y.append(y)
    for elem in z:
        Z.append(elem)
如果您没有使用python 3,那么可以以稍微详细一点的方式执行相同的基本逻辑:

for i, elem in line:
    if i == 0:
        X.append(elem)
    elif i == 1:
        Y.append(elem)
    else:
        Z.append(elem)

您的行包含三个以上的项,因此类似的内容将失败:
a、b、c=[1、2、3、4]