【问题标题】:Boolean function in for loop using numpy in python在python中使用numpy的for循环中的布尔函数
【发布时间】:2016-12-07 00:25:48
【问题描述】:

我有一个对你们中的许多人来说可能很简单的问题。我对 numpy 和 python 很陌生,所以如果你能帮助我,那将意味着很多!我得到 np.logical_and

import numpy as np
edges= np.arange(7)
a_edges= np.arange(5)

for i in range(2):
    indexes = np.logical_and((edges>=a_edges[i]),(edges<a_edges[i+1]))

print(indexes)
[False*  True False False False False False]

我的问题如下。 这个输出是怎么来的?例如,结果的第一个数组 False*(用星号表示)是否表示第一个“边”数组不满足所有 i 范围 (0~2) 的布尔函数?

如果是这样,那么第二个“边”数组不符合所有布尔逻辑,但结果为真。

例如,边[1]= 1。 对于 i=0,edges[1] 不符合后一种逻辑,因此为假。但是,对于 i=1,edges[1] 为真。所以总体来说应该是假的……

我理解不正确吗?

提前致谢! 切切

【问题讨论】:

    标签: python-3.x numpy boolean-logic


    【解决方案1】:

    循环的每次迭代都会覆盖indexes,因此您看到的是i=1 的结果。鉴于此,你的表情变成了

    indexes = np.logical_and(edges>=a_edges[1], edges<a_edges[2])
    
    # equivalent to
    indexes = np.logical_and(edges>=1, edges<2)
    

    换句话说,True 当edges 为 1 时,False 为其他所有值。

    【讨论】:

    • range(2) 返回 [0, 1] 的等价物,是的。因此,首先它使用i=0 运行,然后在您的情况下再次使用i=1 运行并覆盖indexes。
    • 但是当 i=0 时边 [1] 不成立。它是如何发挥作用的?
    • 等等,print() 语句在 for 循环中吗?实际上,您可以编辑您的问题以使缩进正确吗?
    • 比如当edges=0的时候,对于i=0是真的,对吧?但它不适用于 i=0。 edge[0] 是否也应该显示 True 输出?
    • 很抱歉。是的,不。 print(indexes) 没有缩进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2017-07-21
    相关资源
    最近更新 更多