【发布时间】:2017-11-01 08:48:13
【问题描述】:
我有几个 .txt 文件,其中包含反应时间(标题:“RT”)以及正确与不正确的响应(标题:“错误”,零表示正确,一表示不正确)。这与《实验心理学家的 Python》一书略有不同。
现在我想使用布尔向量从 numpy 数组中选择值(例如,只有正确响应的反应时间)。运行python脚本会导致以下错误:
选择['正确'] = 数据['错误'] == 0
KeyError: '错误'
这是我目前正在编写的代码:
import numpy as np
import glob
import os
# read in file paths
DIR = os.path.dirname(os.path.abspath(__file__))
DATA_DIR = os.path.join(DIR, 'Pilotdata')
# define total number of participants
N = 27
counter = 0
# create empty arrays to store data
rt = np.zeros((2, 2, N))
data_file = glob.glob(os.path.join(DATA_DIR, 's[0-9][0-9]_main_data.txt'))
# read in data
for pnr in range(0, N):
counter += 1
RAW = np.loadtxt(data_file[counter], dtype=str, unpack=True)
data = {}
for i in range(len(RAW)):
VARNAME = RAW[i][0]
try:
VALUES = RAW[i][1:].astype(float)
except:
VALUES = RAW[i][1:]
data[VARNAME] = VALUES
select = {}
select['correct'] = data['error'] == 0
select['incorrect'] = data['error'] == 1
我创建的用于存储值的字典似乎有问题。所以这里是输出的摘录:
"b'error'": array([
"b'0'", "b'0'", "b'0'", "b'0'", "b'0'", "b'0'", "b'0'", "b'1'",
"b'0'", "b'1'", "b'0'", "b'0'", "b'0'", "b'0'", "b'0'", "b'0'",
"b'0'", "b'0'", "b'1'", "b'0'", "b'1'", "b'1'", "b'0'", "b'1'", ...
提前致谢!
编辑: 将 Python 解释器从 3 更改为 2 就可以了。有没有办法让代码在 Python3 中运行?
EDIT2:使用np.genfromtxt 代替np.loadtxt 解决了这个问题。
【问题讨论】:
标签: python arrays numpy boolean