Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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 Numpy中的不同数组中_Python_Numpy - Fatal编程技术网

编写函数从数组中获取偶数,并将它们附加到Python Numpy中的不同数组中

编写函数从数组中获取偶数,并将它们附加到Python Numpy中的不同数组中,python,numpy,Python,Numpy,需要编写一个以动态数组为变量的函数。然后,该函数检查数组中的所有偶数,并将这些偶数附加到另一个数组中。此外,任何关于计算此代码时间的帮助都将不胜感激 我已经定义了一个函数并启动了一个数组。我试着在努比做这件事。我试着阅读any()和all(),但不知道如何实现它,因为我想执行带有附加的迭代循环 def even(x): b = [] a = [x] for x in a: if x % 2 == 0:

需要编写一个以动态数组为变量的函数。然后,该函数检查数组中的所有偶数,并将这些偶数附加到另一个数组中。此外,任何关于计算此代码时间的帮助都将不胜感激

我已经定义了一个函数并启动了一个数组。我试着在努比做这件事。我试着阅读any()和all(),但不知道如何实现它,因为我想执行带有附加的迭代循环

def even(x):
        b = []
        a = [x]
        for x in a:
            if x % 2 == 0:
                b = b.append(x)
                next 
arr1 = np.arange(10,51)
even(arr1)

ValueError回溯(最近一次调用)
在里面
7下一步
8 arr1=np.arange(10,51)
---->9偶数(arr1)
偶数(x)
3 a=[x]
a中的x为4:
---->5如果x%2==0:
6b=b.append(x)
7下一步
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
不理解第一个错误输出的含义。对于第二个,我确实理解数组输出是布尔的,因此需要使用任意或全部。然而,我想要的是数组a的输出是整数,如果它满足偶数的for条件,那么它将被添加到数组b中

编辑:谢谢大家的回答。这绝对有助于解决问题。然而,如果有人能解释第一个错误的含义,那只是一个小问题


我正在学习python,这是出于教育目的。

您可以使用python过滤器函数并简化函数定义,如下所示

def get_even(arr1):
    return np.array(list(filter(lambda x:x%2==0,arr1)))
您还可以使用过滤器功能:

  def even(your_array):
        return np.array(list(filter(lambda n: n % 2 == 0, your_array)))
调用该函数时,将得到一个新数组:

arr = even(some_array)

代码的问题是numpy数组会广播
x%2==0
将计算为一个数组:

[ True False  True False  ... True]
在您的
if
语句中,它不会计算为简单的
bool
bool(arr1%2==0)
将显示您得到的
ValueError

您可以使用以下功能代替您的功能:


请尝试
arr1[arr1%2==0]
-它将为您提供所有偶数。这不会返回所有元素吗?@basilik arr=np.array([n表示n,如果n%2==0,则在_数组中为n])您能解释一下这个命令中的操作顺序流程吗?这是从语法的角度来看的…想了解“n代表n…”的方式和原因@Rogue258该语法被称为列表理解,你可以用谷歌搜索它,你会发现很多例子。这基本上相当于在外部作用域中声明空数组时的代码,例如:res=[]表示_数组中的n:if n%2==0:res.append(n)返回res
arr = even(some_array)
[ True False  True False  ... True]
import numpy as np

arr1 = np.arange(10, 51)
res = arr1[arr1 % 2 == 0]
# [10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50]