在numpy中使用布尔数组索引会导致ValueError

达蒙

我正在尝试使用布尔数组进行索引

def boolean_array_indexing_each_dim1():
    a = np.array(
                 [
                  ['a','b','c','d'],
                  ['e','f','g','h'],
                  ['i','j','k','l'],
                  ['m','n','o','p']
                  ]
                 )
    print('a=\n',a.shape,'\n',a)
    b1 = np.array([True,True,True,False]) #gives error
    #b1 = np.array([True,False,True,False]) #works
    print('b1=\n',b1.shape,'\n',b1)
    b2 = np.array([True,False,True,False])
    print('b2=\n',b2.shape,'\n',b2)  
    selected = a[b1,b2]
    print('selected=\n',selected.shape,'\n',selected)

数组b1 = np.array([True,True,True,False])导致“ ValueError形状不匹配:对象无法广播为单个形状”

b1 = np.array([True,False,True,False])但是,该数组有效并产生结果'['a''k']'

为什么会发生此错误?有人可以告诉吗?

弗兰克·M

原因是您的第一个b1数组具有3个True值,第二个数组具有2个True值。这些分别相当于通过索引[0,1,2], [0,2]Numpy的索引通过根据b1andb2数组中的位置序列构造索引对来“起作用” 对于的情况下[0,1,2], [0,2]它构造指数对(0,0), (1,2),但再有就是为最终没有合作伙伴2b1,所以它提出ValueError您的替代项b1有效,因为它恰好具有与相同数量的Trueb2

我怀疑你打算完成的是

selected = a[b1,:][:,b2]

这将b1沿轴0一致地切片该数组,然后b2沿轴1对其进行切片

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Alloy模型中使用布尔值的最佳实践

来自分类Dev

对熊猫中的行和列MultiIndex使用布尔索引

来自分类Dev

在C中使用布尔比较的问题

来自分类Dev

在R中的by函数中使用布尔运算

来自分类Dev

在if语句中使用布尔方法遇到麻烦

来自分类Dev

使用布尔索引的IndexingError

来自分类Dev

在pyDatalog中使用布尔运算符

来自分类Dev

用布尔搜索数组

来自分类Dev

在链表中使用布尔值remove(Object o)

来自分类Dev

使用布尔值或布尔值声明数组

来自分类Dev

使用布尔索引数组的过滤器列表

来自分类Dev

Python-使用布尔值进行安全索引

来自分类Dev

在python 3中使用布尔条件向量选择numpy子数组的简单方法

来自分类Dev

如何在SAS中使用布尔数据类型?

来自分类Dev

在numpy数组上使用布尔操作的可见弃用警告

来自分类Dev

使用布尔数组的Numpy索引

来自分类Dev

使用布尔型掩码为numpy数组分配值:如何?

来自分类Dev

在Presenter中使用索引会导致NoMethodError

来自分类Dev

用布尔数组建立索引

来自分类Dev

关于在DP中使用布尔数组进行记忆

来自分类Dev

在Python中使用布尔值

来自分类Dev

在数据框上使用布尔选择会导致KeyError

来自分类Dev

使用布尔子索引更新数据框

来自分类Dev

在数组的布尔数组中使用numpy any()

来自分类Dev

在if语句C ++中使用布尔数组

来自分类Dev

如何在指向数组对象的“否则”中使用布尔值

来自分类Dev

在多个组件中使用布尔变量

来自分类Dev

使用 `numpy.vectorize` 创建多维数组会导致 ValueError:使用序列设置数组元素

来自分类Dev

使用布尔数组进行数组索引