Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想要一个新数组,它的值只能用布尔掩码除以3或5_Python_Python 3.x_Numpy_Boolean_Numpy Ndarray - Fatal编程技术网

Python 我想要一个新数组,它的值只能用布尔掩码除以3或5

Python 我想要一个新数组,它的值只能用布尔掩码除以3或5,python,python-3.x,numpy,boolean,numpy-ndarray,Python,Python 3.x,Numpy,Boolean,Numpy Ndarray,下面的代码给出了一个错误,我不知道如何获得所需的输出 import numpy as np arr=np.arange(25).reshape(5,5) mask=(arr%3==0 or arr%5==0) print(arr[mask]) 输出-ValueError:包含多个元素的数组的真值不明确。在第4行使用a.any()或a.all()为或使用numpy内置函数: mask=np.logical_or(arr%3==0,arr%5==0) arr[mask] #[ 0 3 5 6

下面的代码给出了一个错误,我不知道如何获得所需的输出

import numpy as np
arr=np.arange(25).reshape(5,5)
mask=(arr%3==0 or arr%5==0)
print(arr[mask])

输出-ValueError:包含多个元素的数组的真值不明确。在第4行使用a.any()或a.all()为
使用numpy内置函数:

mask=np.logical_or(arr%3==0,arr%5==0)
arr[mask]
#[ 0  3  5  6  9 10 12 15 18 20 21 24]

将numpy内置函数用于

mask=np.logical_or(arr%3==0,arr%5==0)
arr[mask]
#[ 0  3  5  6  9 10 12 15 18 20 21 24]

arr%3==0或arr%5==0

对两个布尔变量进行ORing将得到一个布尔答案,因此不能将其用作索引。要获取所有值,下面是一个简单易读的代码:

ans = []
for array in arr:
    for i in array:
        if i%3==0 or i%5==0:
            ans.append(i)
print(ans)

arr%3==0或arr%5==0

对两个布尔变量进行ORing将得到一个布尔答案,因此不能将其用作索引。要获取所有值,下面是一个简单易读的代码:

ans = []
for array in arr:
    for i in array:
        if i%3==0 or i%5==0:
            ans.append(i)
print(ans)

您的代码中有两件事需要更改:

  • 您需要将和/或替换为&/|
  • 您必须为条件添加大括号,以确保计算中没有歧义
  • 更新代码如下:

    import numpy as np
    arr=np.arange(25).reshape(5,5)
    print(arr[(arr%3==0) | (arr%5==0)])
    # Output: [ 0  3  5  6  9 10 12 15 18 20 21 24]
    

    您的代码中有两件事需要更改:

  • 您需要将和/或替换为&/|
  • 您必须为条件添加大括号,以确保计算中没有歧义
  • 更新代码如下:

    import numpy as np
    arr=np.arange(25).reshape(5,5)
    print(arr[(arr%3==0) | (arr%5==0)])
    # Output: [ 0  3  5  6  9 10 12 15 18 20 21 24]