我在一些在线示例中看到了此代码,并试图理解和修改它:
c = a[b == 1]
b == 1
中满足相等性的每个元素,看来b
返回true。我不明白类似a[True]
的结果最终如何评估为“对于b
中相同索引值等于1的所有值,将它们复制到c
a
,b
和c
都是相同长度的NumPy数组,其中包含一些数据。
我已经搜索了很多,但是甚至不知道该怎么称呼。
c = a[b == 1 and d == 1]
我知道
ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()
我知道发生这种情况的原因是,here解释了相等操作的组合是模棱两可的,但是我不确定如何仅在一行中将a.any()
或a.all()
添加到该表达式中。
编辑:
对于问题2,c = a[(b == 1) & (d == 1)]
有效。关于我的第一个问题的任何输入信息,说明为什么/为什么?
答案 0 :(得分:1)
为什么您在第(1)点中的示例不起作用?这是Boolean indexing。如果阵列的形状不同,则可能是另一回事,但是:
c = a[b == 1]
与以下内容没有区别:
c = a[a == 1]
当您不知道实际的数组时。 a
的特定内容在这里没有发生; a == 1
只是设置了一个布尔掩码,然后您将其重新应用于a
中的a[mask_here]
。没关系生成掩码是什么。
答案 1 :(得分:0)
您只需将条件放在方括号中。尝试使用此
range(num_features)