当前位置: 首页 > 面试题库 >

尝试对数组进行索引时,包含多个元素的数组的真值不明确

徐嘉谊
2023-03-14
问题内容

如果var(另一个numpy数组)中的元素> = 0和<=。1,我试图将rbs的所有元素放入一个新数组中。但是,当我尝试以下代码时,出现此错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
rbs = [ish[4] for ish in realbooks]
for book in realbooks:
    var -= float(str(book[0]).replace(":", ""))
    bidsred = rbs[(var <= .1) and (var >=0)]

关于我在做什么错的任何想法?


问题答案:

正如我在对先前答案的评论中告诉您的那样,您需要使用以下任一方法:

c[a & b]

要么

c[np.logical_and(a, b)]

原因是andPython使用该关键字在两个布尔值之间进行测试。数组如何成为布尔值?如果它的75%的商品是TrueTrue还是False?因此,numpy拒绝比较两者。

因此,您必须使用逻辑函数在逐个元素的基础上比较两个布尔数组(np.logical_and)或二进制运算符&

而且,出于索引目的,您确实需要一个布尔数组,其大小与要索引的数组相同。而且 它必须是一个数组
,你不能用列表True/False来代替:其原因是,使用一个布尔数组告诉NumPy的要返回的元素。如果您使用的列表True/False,则NumPy会将其解释1/0为整数列表(即索引)的列表,这意味着您将获得数组的第二个或第一个元素。不是你想要的。

现在,您可以猜测,如果要使用两个布尔数组ab用于索引,请选择ab为True的项目,则可以使用

c[np.logical_or(a,b)]

要么

c[a | b]


 类似资料:
  • 我刚刚在我的代码中发现了一个逻辑错误,它导致了各种各样的问题。我无意中做了位AND而不是逻辑AND。 我把代码从: 到: 令我惊讶的是,我得到了一个相当神秘的错误消息: ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all() 为什么在使用逐位操作时没有发出类似的错误?如何修复?

  • 问题内容: 如果我有一个简单的集合,例如: 如果我要搜索含有维生素B6的水果,则可以执行以下操作: 这样一来,我便可以看到我收藏的所有含有维生素A的水果。但是,我如何能够搜索含有多种维生素(例如维生素B6和C)的水果?我不能简单地搜索,因为那样会寻找数组,而不是独立的字符串。 在Cloud Firestore中甚至有可能吗?如果没有,还有其他替代方法吗? 问题答案: 通过在查询中链接条件来寻找匹配

  • 在Cloud Firestore中这甚至是可能的吗?如果没有的话,有没有其他方法可以做到这一点?

  • 问题内容: 我有一个数组,如: 谁能建议一种基于datetime元素对此进行排序/排序的方法? 问题答案: 使用和自定义比较功能: 编辑 :您的数据组织在一个数组的数组中。为了更好地区分这些数据,我们将其称为内部数组(数据)记录,以便您的数据实际上是一个记录数组。 会一次将其中两个记录传递给给定的比较函数。 然后将每个记录的字段提取为UNIX时间戳(整数),并返回差值,以便结果将是两个日期相等,如

  • 问题内容: 在我的程序中,创建了一个固定长度[7]个对象的数组,每个对象都是一个包含3 ,an 和an的类。这些值是从.txt文件中读取的,并基于的值添加到数组的特定索引中。.txt文件中的条目较少,然后数组中存在索引,因此该数组最终看起来像这样: 后来在节目中,我需要的基础上平均的排序的数组中。我有一个工作方法返回这个,但是当我尝试使用数组进行排序和我开始得到这些错误的一个长长的清单: 我的方法

  • 问题内容: 我只是在代码中发现了一个逻辑错误,该错误导致了各种各样的问题。我在无意中执行了按位AND运算,而不是逻辑AND 运算。 我将代码从: 至: 令我惊讶的是,我得到了一个相当神秘的错误消息: :具有多个元素的数组的真值不明确。使用或 为什么在使用按位运算时没有发出类似的错误?如何解决此错误? 问题答案: r是一个数组。(boolean)数组也是如此。对于numpy数组,该&操作返回两个布尔