字典中的切片数组

问题描述 投票:0回答:2

我有一个看起来像这样的字典:关键是0-9。该值是一个数组,其中包含4个参数(dtype = float)。对于数组中的每个值,都是一个准则(例如,值> 1?)。如果一个值不能满足其标准,则将整个条目从字典中删除。换句话说:只有数组中的所有4个值都满足其各自条件的条目才移到新的字典中]

{0: array([-1.37979662, 1.2237947 , 1.02293956, 2.84491658]), 1: array([-1.32019091, 1.17396212, 1.01325119, 2.89558077]), 2: array([-1.29436374, 0.93597102, 1.06104517, 2.92670774]), 3: array([-1.24879849, 1.04383302, 1.06866074, 2.41867709]), 4: array([-1.1299237 , 0.72485214, 1.04738796, 2.16609311]), 5: array([-1.08398485, 0.96394932, 1.03896677, 2.34082866]), 6: array([-1.24153984, 0.82464176, 1.08445227, 2.6564374 ]), 7: array([-1.04296362, 0.52683467, 1.10769773, 2.32662654]), 8: array([-1.34813309, 0.76031429, 1.01582122, 2.60977459]), 9: array([-1.20303226, 0.79573596, 1.03138351, 2.41515303])

任何提示,谢谢您的努力。

python arrays dictionary slice
2个回答
0
投票
{k: v for k, v in data.items() if sum(v > -1.1) == len(v)} {5: array([-1.08398485, 0.96394932, 1.03896677, 2.34082866]), 7: array([-1.04296362, 0.52683467, 1.10769773, 2.32662654])}

当您执行array > value时,它返回一个布尔数组,我们可以求和。如果此布尔数组的总和为数组的长度,则我们知道每个项目都满足所陈述的条件。我使用-1.1来表明它可以正常工作,因为该词典中的值均不符合> 1标准。


0
投票
  • 对于数组中的每个值,这是一个条件(例如,值> 1?)
  • 以下dict comprehension满足仅包含key: value对的条件,其中np.array中的所有值均为>1.all()是内置的python函数
  • .all()
  • © www.soinside.com 2019 - 2024. All rights reserved.