wyk22293636 2021-01-11 15:16 采纳率: 0%
浏览 27

numpy中的max函数在底层C代码中是如何实现的

使用了一段时间的numpy之后,想阅读以下numpy的c代码实现。在看到min, max, sum时,想看看如何根据axis参数去进行底层的实现。

如果没有理解错误的话:这几个函数入口在methods.c中的array_methods结构体中定义:

 {"max",
        (PyCFunction)array_max,
        METH_VARARGS | METH_KEYWORDS, NULL},
    {"mean",
        (PyCFunction)array_mean,
        METH_VARARGS | METH_KEYWORDS, NULL},
    {"min",
        (PyCFunction)array_min,
        METH_VARARGS | METH_KEYWORDS, NULL},

但是array_max函数实现是:

static PyObject *
array_max(PyArrayObject *self, PyObject *args, PyObject *kwds)
{
    NPY_FORWARD_NDARRAY_METHOD("_amax");
}

我不太明白这个NPY_FORWARD_NDARRAY_METHOD是如何找到对应callable来执行max函数的?

#define NPY_FORWARD_NDARRAY_METHOD(name) \
        static PyObject *callable = NULL; \
        npy_cache_import("numpy.core._methods", name, &callable); \
        if (callable == NULL) { \
            return NULL; \
        } \
        return forward_ndarray_method(self, args, kwds, callable)
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 虚幻5 UE美术毛发渲染
    • ¥15 CVRP 图论 物流运输优化
    • ¥15 Tableau online 嵌入ppt失败
    • ¥100 支付宝网页转账系统不识别账号
    • ¥15 基于单片机的靶位控制系统
    • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
    • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
    • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
    • ¥15 手机接入宽带网线,如何释放宽带全部速度
    • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测