Python 按其中一个键的值拆分字典 IndexError : index 141 is out of bounds for axis 0 with size 1

标签 python dictionary split

这个问题是对已经提出的问题的补充:Splitting dict by value of one of the keys

我有一个有 19 个键的字典,每个键包含一个包含 51000 个值或观察值的数组。其中一个键是分组/分类键,它的值可以是 1 或 2。我想做的是将字典分成两个新字典。一种用于分类键为 1 时,另一种用于分类为 2 时。

data = {'variable 1': array([ 90, 91, 89, ...
           .
           .
           .
       'variable 18': array([0.1, 0.02, 0.4, ...
       'classifier': array([1, 1, 2, ...
       }

针对上述问题,我已经尝试执行 georgesl 发布的解决方案:

data1 = [ { key : data[key][idx] for key in data.keys() }  for idx, x in enumerate(data["id"]) if x == 1 ]

但是,当我运行它时,出现以下错误:

 IndexError: index 141 is out of bounds for axis 0 with size 1

我还尝试使用以下方法将数组转换为列表:

data2 = {}
for key in data.keys():
     data[key] = data[key].tolist()

但是当我通过发布的解决方案运行它时会产生以下错误:

IndexError: list index out of range

我可能遗漏了一些非常明显的东西,但我终究无法弄清楚是什么。我愿意接受任何建议。

最佳答案

我用了一些不同的东西,希望你不介意。我相信它有效:

from itertools import compress
data2={key:list(compress(data[key],[i-1 for i in data['classifier']])) for key in data.keys()}
data1={key:list(compress(data[key],[i-2 for i in data['classifier']])) for key in data.keys()}

这是我第一次使用 itertools.compress所以我不是专家。无论如何,它就像一个面具一样工作:

>>> list(compress(['no','yes'],[False, True]))

给出:

['yes']

另外,如果

data ['classifier'] = [1, 1, 2]

然后

[i-1 for i in data['classifier']]

给出:

[0, 0, 1] #evaluates to [False,False,True]

[i-2 for i in data['classifier']]

给出:

[-1, -1, 0] #evaluates to [True,True,False]

现在,假设你想在分类器中使用 0 和 1,如果分类键是 0,你有 data1,这是你的代码:

data2={key:list(compress(data[key],[i for i in data['classifier']])) for key in data.keys()} # or just data['classifier']
data1={key:list(compress(data[key],[i + anything for i in data['classifier']])) for key in data.keys()}

关于Python 按其中一个键的值拆分字典 IndexError : index 141 is out of bounds for axis 0 with size 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23233617/

相关文章:

Java拆分函数

python - 两个相同的图像具有不同的哈希值无法弄清楚为什么

python - gunicorn_django 错误 "cannot find myproject.settings in your PYTHONPATH"

python - 在Python中将字典格式的txt文件转换为excel

java - 如何使用正则表达式拆分字符串而不消耗拆分器部分?

r - 根据特定标记从数据框中拆分字符列

python - 如何在 pygame 中添加敌人?

javascript - 使用 Bokeh 的交互式 slider

c# - 需要从多个词典<Datetime,double> 中获取一组唯一的键

dictionary - channel map