我已经尝试过在这个上搜索了很多,但是对于python来说相对较新我觉得我缺少必要的术语来找到我正在寻找的东西。
我有一个功能:
def my_function(x,y):
# code...
return(a,b,c)
其中x
和y
是numpy
长度为2000的数组,返回值为整数。我正在寻找一个速记(单行)来循环这个函数:
Output = [my_function(X[i],Y[i]) for i in range(len(Y))]
X
和Y
的形状(135,2000)。但是,运行此操作后,我目前必须执行以下操作,将“输出”分成三个numpy
数组。
Output = np.asarray(Output)
a = Output.T[0]
b = Output.T[1]
c = Output.T[2]
我觉得这不是最好的做法。我试过了:
(a,b,c) = [my_function(X[i],Y[i]) for i in range(len(Y))]
但这似乎不起作用。有谁知道我的问题快速解决方法?
答案 0 :(得分:0)
my_function(X[i], Y[i]) for i in range(len(Y))
在越过“基于意见的”边界的边缘,...Y[i]... for i in range(len(Y))
通常是Python中的一个禁忌。使用numpy
数组时,它甚至是更大的禁忌。使用numpy
的一个优点是它提供的'vectorization',从而将for
循环推送到C级而不是(较慢的)Python级。
所以,如果你重写my_function
所以它可以使用numpy
提供的多种工具和方法以矢量化的方式处理数组,你甚至可能不需要“一线”寻找。