我有一个 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>
答案 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)
生成相同的x
和y
。
我询问了形状和dtype
In [11]: data.shape
Out[11]: (11, 3)
In [12]: data.dtype
Out[12]: dtype('float64')
我更喜欢np.genfromtxt
,但在这种情况下,它会产生相同的data
。