提问人:Dazckel 提问时间:4/16/2022 最后编辑:Dazckel 更新时间:4/16/2022 访问量:101
有没有办法将函数应用于 pyhton 中的列表数组?
Is there any way to apply a function to an array of lists in pyhton?
问:
我有一个包含两个坐标的列表数组。 我想应用这个功能:
def f(x, y, a, b):
return sign(y - a*x - b)
其中 x 和 y 是坐标,a 和 b 定义线方程。
该函数返回直线和点之间距离的符号。
有没有办法一次将此函数应用于列表数组并获取标签列表?喜欢:
Y = f(x[:,0],x[:,1],a,b)
谢谢
答:
0赞
Remzak Kacper
4/16/2022
#1
你的意思是,映射调用函数对可迭代的每个元素map()
例如:
def f(x):
return x**2
lst = [1,2,3,4,5]
print(tuple(map(f, lst)))
输出:
(1,4,9,16,25)
*非常重要
map 返回生成器,因此您需要使用 或从 map 获取值tuple()
list()
3赞
eshirvana
4/16/2022
#2
你可以使用 numpy :vectorize
vectorize
定义一个向量化函数,该函数将嵌套的对象序列或 numpy 数组作为输入,并返回单个 numpy 数组或 numpy 数组的元组。矢量化函数像 python map 函数一样,在输入数组的连续元组上计算 pyfunc,但它使用 numpy 的广播规则。
def f(x, y, a, b):
return np.sign(y - a*x - b)
vfunc = np.vectorize(f)
输出:
x = np.random.rand(10,10)
y = np.random.rand(10,10)
Y = vfunc(x[:,0],y[:,1],1,0)
print(Y)
>> [-1. 1. 1. -1. -1. -1. -1. 1. -1. -1.]
评论
1赞
hpaulj
4/17/2022
Y1 = f(x[:,0],y[:,1],1,0)
做同样的事情,并且速度快 6 倍(对于此示例)。
0赞
eshirvana
4/17/2022
@hpaulj真的!!
评论
np.ndarray
np.sign
f(x[:,0],x[:,1],a,b)
sign