【问题标题】:Problem to obtain an array of Boolean values获取布尔值数组的问题
【发布时间】:2020-10-14 09:02:54
【问题描述】:

我必须创建一个分析列表的函数。在数组中,如果这个列表的元素大于 0,则必须返回 True,否则返回 False。这是我写的。我们看到,如果我们简单地比较两个数组,它会自动返回一个布尔值数组。

import numpy as np
def adjacency(lst):
    arr = np.array(lst)
    pool = np.full_like(arr, 0)
    arr > pool

但是在这里,他们给了我错误:«你的函数没有返回一个 numpy 数组» 因此我尝试编写另一个代码:

import numpy as np

def adjacency(lst):
    arr = np.array(lst)
    for x in arr:
        if np.any(x == 0):
            x = False
        if np.any(x > 0):
            x = True

但它确实和上面说的一样......

【问题讨论】:

    标签: python arrays list numpy


    【解决方案1】:

    您的代码几乎完成了。你想要这样,对吧?

    import numpy as np
    
    def adjacency(lst):
        arr = np.array(lst)
        print(arr)
        new_arr = []
        for x in arr:
            if np.any(x <= 0):
                x = False
                new_arr.append(x)
            else:
                x = True
                new_arr.append(x)
        arr1 = np.array(new_arr)
        print(arr1)
        return new_arr
    
    print(adjacency([1,-2,3,4,0,-10]))
    

    输出:

    [  1  -2   3   4   0 -10]
    [ True False  True  True False False]
    [True, False, True, True, False, False]
    

    【讨论】:

    • 感谢您提出创建新列表的想法。但是,它并没有给我正确的结果。有了你的列表,它给了我一个列表,只有 False 布尔值。当我尝试使用嵌套列表(列表中包含的列表)时,它只给了我第一个带有错误值的列表。该函数最后应该给我们一个数组,所以我认为我们必须返回数组而不是最后的列表。但是for循环有一个问题,因为我们只能在只有假值的列表上获得......
    【解决方案2】:

    大于/等于/小于符号必须这样写才能起作用。 试试这个

    def adjacency(lst):
        arr = np.array(lst)
        out = []
        for x in arr:
            if np.any(x <= 0):
                x = False
                out.append(x)
            elif np.any(x >> 0):
                x = True
                out.append(x)
    

    【讨论】:

    • 感谢您提出创建新列表的想法。但是,它并没有给我正确的结果。有了你的列表,它给了我一个列表,只有 False 布尔值。当我尝试使用嵌套列表(列表中包含的列表)时,它只给了我第一个带有错误值的列表。该函数最后应该给我们一个数组,所以我认为我们必须返回数组而不是最后的列表。但是for循环有一个问题,因为我们只能在只有假值的列表上获得......
    猜你喜欢
    • 2019-10-06
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2015-09-17
    • 2013-11-28
    • 1970-01-01
    相关资源
    最近更新 更多