当我们为某个向量调用向量化函数时,由于某种原因,它会为第一个向量元素调用两次. 原因是什么,我们可以摆脱这种奇怪的效果(例如,当这个函数需要有一些副作用时,例如,计数一些和等)

示例:

import numpy

@numpy.vectorize
def test(x):
    print(x)

test([1,2,3])

结果:

1
1
2
3

numpy 1.26.4

推荐答案

这一点在vectorize个文档中有很好的定义:

如果没有指定otype,则使用第一个参数对函数的调用来确定输出的数量.

如果你不想这样,你可以定义otypes:

import numpy

def test(x):
    print(x)
    
test = numpy.vectorize(test, otypes=[float])
test([1,2,3])

1
2
3

在任何情况下,请注意vectorize只是Python循环的一个方便.如果你需要有副作用,你可能宁愿使用显式的Python循环.

Python相关问答推荐

在Python中处理大量CSV文件中的数据

如何删除索引过go 的lexsort深度可能会影响性能?' &>

管道冻结和管道卸载

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

如何在Python脚本中附加一个Google tab(已经打开)

try 将一行连接到Tensorflow中的矩阵

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

无法在Docker内部运行Python的Matlab SDK模块,但本地没有问题

在单个对象中解析多个Python数据帧

如何在两列上groupBy,并使用pyspark计算每个分组列的平均总价值

计算空值

在用于Python的Bokeh包中设置按钮的样式

如何在Python 3.9.6和MacOS Sonoma 14.3.1下安装Pyregion

语法错误:文档. evaluate:表达式不是合法表达式

mdates定位器在图表中显示不存在的时间间隔

Python如何导入类的实例

在Pandas 中以十六进制显示/打印列?

在聚合中使用python-polars时如何计算模式

普洛特利express 发布的人口普查数据失败

如何通过特定导入在类中执行Python代码