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]