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

标签 python numpy

这个问题提供了有关使用输入作为输出来使用 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/

相关文章:

python - 求 c 使得 sum(x+c) over positives = K

python - 如何让正则表达式分别选择单词

python - 带有字符串 X 和 Y 坐标的散点图

arrays - 在 MATLAB 中,如何将多维数组写为看起来像原始 numpy 数组的字符串?

python - 来自迭代多个 URL 的 JSON 响应以存储 DataFrame

python - OpenCV-在生成色调直方图时忽略像素

python - 如何组合 pandas 数据框中的两列并为其设置值?

python - 使用 xhtml2pdf Django 从 HTML 页面获取 PDF

python - 使用 Python 2.7/Windows 运行多处理作业

python - 计算图像小波时如何限制 numpy 数组的打印输出?