我想使用Numpy的genfromtxt
函数导入文本文件。
我无法这样做,因为它说有太多值要解压缩。
Traceback (most recent call last):
File "C:\Users\loges\AppData\Roaming\Sublime Text 3\Packages\User\test4.py", line 12, in <module>
filling_values={-1:0})
ValueError: too many values to unpack (expected 4)
[Finished in 1.1s]
我尝试根据我在网上找到的例子来定义变量,但似乎没有一个对我有用。
有人可以帮我识别我的错误吗?
这是我的文本文件的一个例子,它分别是XYZ坐标和temp。
-7 -9.000000000000002 -3 622.0582425616101
-6.500000000000001 -9.000000000000002 -3 622.1498719223513
-6 -9.000000000000002 -3 622.2415012830924
这是我的代码。我想找到最高和平均温度值。这只是前3行。它是一个包含大量数据行的文件。
import numpy as np
x, y, z, t = np.genfromtxt('C:\\Users\\loges\\OneDrive\\Documents\\School\\ME4101A FYP\\temperature600.txt',
skip_header=0, skip_footer=0,
unpack = True,
names= ['x', 'y', 'z', 't'],
dtype = [('x', float), ('y', float), ('z', float), ('t', float)],
usecols = (-1),
missing_values={-1:""},
filling_values={-1:0})
print("Max Temp :", t.max())
答案 0 :(得分:0)
此处np.genfromtxt
返回3个值而不是4,这是您的第一个问题。其次,如果您试图获得最高温度,为什么要将单个变量(x,y,z,t)分配给返回值?这就是我要做的事情:
import numpy as np
temps = np.genfromtxt('C:\\Users\\loges\\OneDrive\\Documents\\School\\ME4101A FYP\\temperature600.txt',
skip_header=0, skip_footer=0,
unpack = True,
names= ['x', 'y', 'z', 't'],
dtype = [('x', float), ('y', float), ('z', float), ('t', float)],
usecols = (-1),
missing_values={-1:""},
filling_values={-1:0})
data #=> array([(622.0582425616101,), (622.1498719223513,), (622.2415012830924,)], dtype=[('t', '<f8')])
print("Max Temp :", temps.max())
答案 1 :(得分:0)
In [91]: txt=b"""-7 -9.000000000000002 -3
...: 622.0582425616101
...: -6.500000000000001 -9.000000000000002 -3
...: 622.1498719223513
...: -6 -9.000000000000002 -3
...: 622.2415012830924"""
使用dtype
,无需解压缩。只需使用生成的结构化数组:
In [88]: dt=np.dtype([('x', float), ('y', float), ('z', float), ('t', float)])
In [92]: data = np.genfromtxt(txt.splitlines(),dtype=dt)
In [93]: data
Out[93]:
array([(-7. , -9., -3., 622.05824256),
(-6.5, -9., -3., 622.14987192),
(-6. , -9., -3., 622.24150128)],
dtype=[('x', '<f8'), ('y', '<f8'), ('z', '<f8'), ('t', '<f8')])
In [94]: data['x']
Out[94]: array([-7. , -6.5, -6. ])
In [95]: data['t']
Out[95]: array([ 622.05824256, 622.14987192, 622.24150128])
In [96]: _.max()
Out[96]: 622.24150128309236
genfromtxt
只有usecols
只创建一个数组,而不是4:
In [97]: np.genfromtxt(txt.splitlines(),skip_header=0, skip_footer=0,
...: unpack = True,
...: names= ['x', 'y', 'z', 't'],
...: dtype = [('x', float), ('y', float), ('z', float), ('t', f
...: loat)],
...: usecols = (-1),
...: missing_values={-1:""},
...: filling_values={-1:0})
...:
Out[97]:
array([( 622.05824256,), ( 622.14987192,), ( 622.24150128,)],
dtype=[('t', '<f8')])