python - 读取整个 Numpy 库中的文件

标签 python numpy file-read

我正在尝试使用 Numpy 读取文本文件中的数据,这些数据如下所示:

# Student data collected on 17 July 2014
# Researcher: Dr Wicks, University College Newbury

# The following data relate to N = 20 students. It
# has been totally made up and so therefore is 100%
# anonymous.

Subject  Sex    DOB     Height  Weight   BP     VO2max
(ID)     M/F dd/mm/yy     m       kg    mmHg   mL.kg-1.min-1
JW-1     M   19/12/95    1.82    92.4  119/76    39.3
JW-2     M   11/1/96     1.77    80.9  114/73    35.5
JW-3     F    2/10/95    1.68    69.7  124/79    29.1
JW-6     M    6/7/95     1.72    75.5  110/60    45.5
# JW-7   F   28/3/96     1.66    72.4  101/68      -
JW-9     F   11/12/95    1.78    82.1  115/75    32.3
JW-10    F   7/4/96      1.60      -    -/-      30.1
JW-11    M   22/8/95     1.72    77.2  97/63     48.8
JW-12    M   23/5/96     1.83    88.9  105/70    37.7
JW-14    F   12/1/96     1.56    56.3  108/72    26.0
JW-15    F   1/6/96      1.64    65.0  99/67     35.7
JW-16    M   10/9/95     1.63    73.0  131/84    29.9
JW-17    M   17/2/96     1.67    89.8  101/76    40.2
JW-18    M   31/7/96     1.66    75.1   -/-        -
JW-19    F   30/10/95    1.59    67.3  103/69    33.5
JW-22    F   9/3/96      1.70     -    119/80    30.9
JW-23    M   15/5/95     1.97    89.2  124/82      -
JW-24    F   1/12/95     1.66    63.8  100/78      -
JW-25    F   25/10/95    1.63    64.4   -/-      28.0
JW-26    M   17/4/96     1.69      -   121/82    39.

我阅读了性别高度列,并且我在下面的代码中没有遇到任何问题:

import numpy as np

fname = 'D:\\NumpyTutorial.txt'
datatype1 = np.dtype([('sex','|S1'),('height','f8')])
a = np.loadtxt(fname, dtype=datatype1, skiprows=9, usecols=(1,3))
print(a)

但是当我尝试使用下面的代码读取权重列时:

import numpy as np

fname = 'D:\\NumpyTutorial.txt'
datatype1 = np.dtype([('sex','|S1'),('height','f8'),('Weight','f8')])
a = np.loadtxt(fname, dtype=datatype1, skiprows=9, usecols=(1,3,4))
print(a)

我收到此错误:

ValueError: could not convert string to float: '-'.

1- 我该如何处理这个sign(-)。我如何阅读本专栏?。

2- 对于性别栏,我使用了'|S1',对于高度,我使用了'f8'Subject、BOD 和 BP 列语法是什么,直到读取它们?

3 - 我如何显示该文件中的所有内容?

最佳答案

https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

您可以使用 np.genfromtxt 及其 missing_valuesfilling_values 参数。我在 data.txt 中制作了一些以下形式的虚拟数据,其中缺少一个条目。

ID      Value
0       10
1       58
2       -
3       27

然后,我使用 np.genfromtxt 加载此数据,如以下代码块所示。请注意,这只会使用所需的格式检索数据 - 您需要自己对数据进行后处理,以确保您没有不当使用无效或缺失的条目。

在此示例中,我将缺失条目中的填充值设置为 -1,因为我希望所有值均为正数。用于数据处理的另一个简单的 filling_values 选择是 np.nan

import numpy as np

fname = './data.txt'
data = np.genfromtxt(fname, skip_header=1, \
        missing_values='-', filling_values=-1.) 

print(data)


###  Output:
###    [[ 0. 10.]
###     [ 1. 58.]
###     [ 2. -1.]
###     [ 3. 27.]]

您应该能够对体重和 VO2max 列使用相同的技术。由于其格式,我不确定如何处理 BP 列 - 该选择取决于您,但技术是相同的。

关于python - 读取整个 Numpy 库中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367863/

相关文章:

python - 从 4D 数组中的相同索引获取值列表

c++ - 一次读取多行文件的有效方法?

c - 从文件中读取值并将其存储在二维矩阵中

c++ - fread 在新进程中完成时给出 BadPtr

python - 使用python检查注册表项是否存在

Python3找到最后一次出现的字符串然后写入

python - 具有 3 个变量的 numpy 直方图

python - 将 Python 序列(时间序列/数组)拆分为重叠的子序列

python - 通过 GCS 触发器在云功能中获取用户信息

python - SKlearn SGD 部分拟合