用numpy数组调用lambda

2024-04-25 14:03:01 发布

您现在位置:Python中文网/ 问答频道 /正文

在熟悉numpy时,我注意到numpy数组中有一个有趣的行为:

import numpy as np

arr = np.array([1, 2, 3])
scale = lambda x: x * 3

scale(arr) # Gives array([3, 6, 9])

与普通的Python列表相比:

arr = [1, 2, 3]
scale = lambda x: x * 3

scale(arr) # Gives [1, 2, 3, 1, 2, 3, 1, 2, 3]

我很好奇这怎么可能。一个numpy数组是否覆盖乘法运算符或其他内容?


Tags: lambdaimportnumpy内容列表asnp运算符
3条回答

这是两个不同的对象,当您对它们使用*运算符时,它们的行为会有所不同。

  1. 在第一种情况下,生成一个numpy数组。在这种情况下,*运算符被重载以执行乘法。i、 每个元素将乘以3。

  2. 在第二种情况下,生成一个列表。在这种情况下,*运算符被视为repetition operator,整个列表重复3次。

代码示例:

type(np.array([1,2,3]))
type([1, 2, 3])

结果:

list
numpy.ndarray

numpy.ndarrayoverloads通过定义自己的__mul__方法,*运算符。同样,对于+-等,这允许向量运算。

关于numpy中的Overriding操作符

你可以学习numpy.arryhere

让我们把重点放在你的lamda函数上

1。numpy数组:

arr = numpy.array([1, 2, 3])
type(arr)
scale = lambda x: x * 3 
scale(arr)

这将从数组中获取每个元素

2。正常列表:

a =[1,2,3]
type(a)
scale = lambda x: x * 3 
scale(a)

这将完整列表作为x,并将列表本身乘以

相关问题 更多 >

    热门问题