我有一个包含数字数据的文件,在表格format.It中总共有6列。我想在5维数组中读取并存储5列的值,并将第6列的值存储到另一个数组中。我尝试使用numpy的loadtxt(),但它将所有列加载到一个列中。甚至我尝试使用带有unpack参数的loadtext(),但是它将每一列存储到不同的变量中。我在"stackoverflow“中搜索同样类型的问题,但没有找到任何东西。下面是我的数据示例
5000 0 0.3048 71.3 0.00266337 121.301
6300 0 0.3048 71.3 0.00266337 119.541
8000 0 0.3048 71.3 0.00266337 117.151
10000 0 0.3048 71.3 0.00266337 115.391
12500 0 0.3048 71.3 0.00266337 112.241
16000 0 0.3048 71.3 0.00266337 108.721发布于 2016-01-31 06:53:38
将pandas包与read_csv、iloc和values方法配合使用:
import pandas as pd
from io import StringIO
data ="""
5000 0 0.3048 71.3 0.00266337 121.301
6300 0 0.3048 71.3 0.00266337 119.541
8000 0 0.3048 71.3 0.00266337 117.151
10000 0 0.3048 71.3 0.00266337 115.391
12500 0 0.3048 71.3 0.00266337 112.241
16000 0 0.3048 71.3 0.00266337 108.721
"""
df = pd.read_csv(StringIO(data), sep='\s+', header=None)
a = df.iloc[:, :5].values
b = df.iloc[:, 5].values
In [192]: a
Out[192]:
array([[ 5.00000000e+03, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 6.30000000e+03, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 8.00000000e+03, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 1.00000000e+04, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 1.25000000e+04, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 1.60000000e+04, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03]])
In [193]: b
Out[193]: array([ 121.301, 119.541, 117.151, 115.391, 112.241, 108.721])发布于 2016-01-31 06:56:55
如果您想要使用不带pandas的NumPy的解决方案,请考虑读入整个数据,然后使用np.hsplit
In [75]: data = np.loadtxt('data.txt')
In [76]: d, e = np.hsplit(data, (-1,)) # split at the final column
In [77]: d
Out[77]:
array([[ 5.00000000e+03, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 6.30000000e+03, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 8.00000000e+03, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 1.00000000e+04, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 1.25000000e+04, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03],
[ 1.60000000e+04, 0.00000000e+00, 3.04800000e-01,
7.13000000e+01, 2.66337000e-03]])
In [78]: e
Out[78]:
array([[ 121.301],
[ 119.541],
[ 117.151],
[ 115.391],
[ 112.241],
[ 108.721]])https://stackoverflow.com/questions/35108169
复制相似问题