gpt4 book ai didi

python - 从不分配 numpy.ufunc 的输出

转载 作者:行者123 更新时间:2023-11-28 22:14:41 28 4
gpt4 key购买 nike

这个问题有关于使用输入作为输出来使用 numpy.ufunc 计算某些东西的信息:

是否可以避免为 numpy.ufunc 的不需要的输出分配空间?例如,假设我只想要来自 modf 的两个输出之一。我可以确保根本不分配另一个不需要的数组吗?

我认为将 _ 传递给 out 可能会成功,但它会引发错误:

import numpy as np
ar = np.arange(6)/3
np.modf(ar, out=(ar, _))

TypeError: return arrays must be of ArrayType

正如文档中所说,传递 None 意味着输出数组在函数中分配并返回。我可以忽略返回值,但它仍然必须在函数内部分配和填充。

最佳答案

您可以通过传递“假”数组来最小化分配:

ar = np.arange(6) / 3
np.modf(ar, ar, np.broadcast_arrays(ar.dtype.type(0), ar)[0])

这个虚拟数组与单个double 一样大,modf 不会在内部进行分配。

编辑 根据@Eric 和@hpaulj 的建议,一个更通用和更长期的解决方案是

np.lib.stride_tricks._broadcast_to(np.empty(1, ar.dtype), ar.shape, False, False)

关于python - 从不分配 numpy.ufunc 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53329181/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com