【问题标题】:Genfromtxt value error: got n columns instead 1Genfromtxt 值错误:得到 n 列而不是 1
【发布时间】:2021-10-29 06:51:30
【问题描述】:

我正在使用 numpy.genfromtxt 将 csv 文件中的数据列作为变量导入两次(每列对应于不同的变量 x 和 y)。我收到一个值错误:(得到 3 列而不是 1 列)即使我指定了要使用的列。代码如下:

import numpy as np
file = 'E:/TPA/AOM_8.csv'
file = os.path.normpath(file)
x = np.genfromtxt(file, delimiter=',', usecols=1, skip_header=9)
print(x)
y = np.genfromtxt(file, delimiter=',', usecols=3, skip_header=9)
print(y)  

奇怪的是代码打印“x”没有问题,但打印“y”却可以。如果我将 'y' 更改为

y = np.genfromtxt(file, delimiter=',', usecols=2, skip_header=9)

然后就可以了。

文件示例如下:

ASCII data file created with TiePie Multi Channel software. www.tiepie.com.
2021-08-27 18:25:57 437m





Sample number,Relative time,Data collector1,Data collector2
 ,s,V,V
0,0,4.0176473,6.1250002
1,1E-5,4.0078434,6.0784316
2,2E-5,4.001961,6.1274512
3,3E-5,4.029412,6.0980394
4,4E-5,4.0333336,6.1274512
5,5E-5,4.0009806,6.1446081
6,6E-5,4.0205885,6.1274512
7,7E-5,4.0098042,6.1299022
8,8E-5,4.0058826,6.1078434
9,9E-5,4.0098042,6.154412
10,0.0001,4.0225493,6.1053924
11,0.00011,4.0323532,6.0588237
12,0.00012,4.0147061,6.1421571

【问题讨论】:

  • 可能您的跳过标题已关闭。您检查过x 值吗?有什么意外吗?
  • @hpaulj 我尝试更改标题中要跳过的行数,但没有解决问题。据我所知,“x”看起来是正确的。

标签: python numpy genfromtxt


【解决方案1】:

我没有问题:

In [710]: txt='''ASCII data file created with TiePie Multi Channel software. www
     ...: .tiepie.com.
     ...: 2021-08-27 18:25:57 437m
     ...: 
     ...: 
     ...: 
     ...: 
     ...: 
     ...: Sample number,Relative time,Data collector1,Data collector2
     ...:  ,s,V,V
     ...: 0,0,4.0176473,6.1250002
     ...: 1,1E-5,4.0078434,6.0784316
     ...: 2,2E-5,4.001961,6.1274512
     ...: 3,3E-5,4.029412,6.0980394
     ...: 4,4E-5,4.0333336,6.1274512
     ...: 5,5E-5,4.0009806,6.1446081
     ...: 6,6E-5,4.0205885,6.1274512
     ...: 7,7E-5,4.0098042,6.1299022
     ...: 8,8E-5,4.0058826,6.1078434
     ...: 9,9E-5,4.0098042,6.154412
     ...: 10,0.0001,4.0225493,6.1053924
     ...: 11,0.00011,4.0323532,6.0588237
     ...: 12,0.00012,4.0147061,6.1421571'''
In [711]: txt=txt.splitlines()
In [712]: len(txt)
Out[712]: 22

全部:

In [713]: data = np.genfromtxt(txt, delimiter=',', skip_header=9)
In [714]: data
Out[714]: 
array([[0.0000000e+00, 0.0000000e+00, 4.0176473e+00, 6.1250002e+00],
       [1.0000000e+00, 1.0000000e-05, 4.0078434e+00, 6.0784316e+00],
       [2.0000000e+00, 2.0000000e-05, 4.0019610e+00, 6.1274512e+00],
       [3.0000000e+00, 3.0000000e-05, 4.0294120e+00, 6.0980394e+00],
       [4.0000000e+00, 4.0000000e-05, 4.0333336e+00, 6.1274512e+00],
       [5.0000000e+00, 5.0000000e-05, 4.0009806e+00, 6.1446081e+00],
       [6.0000000e+00, 6.0000000e-05, 4.0205885e+00, 6.1274512e+00],
       [7.0000000e+00, 7.0000000e-05, 4.0098042e+00, 6.1299022e+00],
       [8.0000000e+00, 8.0000000e-05, 4.0058826e+00, 6.1078434e+00],
       [9.0000000e+00, 9.0000000e-05, 4.0098042e+00, 6.1544120e+00],
       [1.0000000e+01, 1.0000000e-04, 4.0225493e+00, 6.1053924e+00],
       [1.1000000e+01, 1.1000000e-04, 4.0323532e+00, 6.0588237e+00],
       [1.2000000e+01, 1.2000000e-04, 4.0147061e+00, 6.1421571e+00]])

单列:

In [715]: x = np.genfromtxt(txt, delimiter=',', skip_header=9,usecols=1)
In [716]: x
Out[716]: 
array([0.0e+00, 1.0e-05, 2.0e-05, 3.0e-05, 4.0e-05, 5.0e-05, 6.0e-05,
       7.0e-05, 8.0e-05, 9.0e-05, 1.0e-04, 1.1e-04, 1.2e-04])
In [717]: x = np.genfromtxt(txt, delimiter=',', skip_header=9,usecols=2)
In [718]: x = np.genfromtxt(txt, delimiter=',', skip_header=9,usecols=3)
In [719]: x
Out[719]: 
array([6.1250002, 6.0784316, 6.1274512, 6.0980394, 6.1274512, 6.1446081,
       6.1274512, 6.1299022, 6.1078434, 6.154412 , 6.1053924, 6.0588237,
       6.1421571])

【讨论】:

  • 这似乎是一个来来去去的问题,我一直无法弄清楚原因。感谢您的尝试!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 2018-04-26
  • 2015-10-26
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多