读取文件为数组

时间:2016-08-26 21:19:29

标签: python arrays numpy

我有一个 cvs 文件,其中包含三列数字,每行最多三位数:

1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0

我想分别阅读这些列,并能够将它们用作数组:

data = np.loadtxt('file.csv')
x = data[:, 0]
y = data[:, 1]

但我得到了:

X = np.array(X, dtype)
ValueError: setting an array element with a sequence.

如果我使用行x,y = np.loadtxt('Beamprofile.txt', usecols=(0,1), unpack=True),则错误消失,但 x y 似乎无法在进一步操作中正确读取。< / p>

2 个答案:

答案 0 :(得分:0)

最简单的解决方法是在python中使用pandas模块,它可以自由地将列值用作numpy数组,您可以轻松地将其转换为列表。

<?php
    session_start();
    require('konektor.php');

    if(!(isset($_SESSION["login"]) && $_SESSION["login"] == "OK")) 
    {
        header("Location: index.php");
        exit;
    }
    else
    {
        $id = $_GET['newsid'];
        $query = "DELETE FROM `Oglasi` WHERE `ID` = '$id'";
        header("Location: oglasi.php");
    }
?>  

如果要访问可用于循环的所有列,请执行以下操作:

    import pandas as pd

    df = pd.read_csv(open("name_of_the_csv.csv"))
    # For one column, lets say the 1st one
    column_1_list = df[df.columns[0]].values 

答案 1 :(得分:0)

使用您的样本:

In [1]: data=np.loadtxt('stack39174768.txt')
In [2]: data
Out[2]: 
array([[  1.,   0.,   0.],
       [  2.,   0.,   0.],
       [  3.,   0.,   0.],
       [  4.,   0.,   0.],
       [  5.,   0.,   0.],
       [  6.,   0.,   0.],
       [  7.,   0.,   0.],
       [  8.,   0.,   0.],
       [  9.,   0.,   0.],
       [ 10.,   0.,   0.],
       [ 11.,   0.,   0.]])
In [3]: x=data[:,0]
In [4]: y=data[:,1]
In [5]: x
Out[5]: array([  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,  11.])
In [6]: y
Out[6]: array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

问题出在哪里?是否有关于我们在剪辑中没有看到的文件的内容?

In [8]: x,y = np.loadtxt('stack39174768.txt', usecols=(0,1), unpack=True)

生成相同的xy

我询问了形状和dtype

In [11]: data.shape
Out[11]: (11, 3)
In [12]: data.dtype
Out[12]: dtype('float64')

我更喜欢np.genfromtxt,但在这种情况下,它会产生相同的data