C中处理Python的Numpy数组的代码范例

简介: C中处理Python的Numpy数组的代码范例

今天处理Python的返回值,折腾了半天,又是连蒙带猜,找到了办法。为了方便大家,特别提供出来。希望给其他人带来工作上的顺利。


int fext_python_action(const ImageBuffer* pImage, DataBuffer* pOutput)
{
  PyObject* pArgs = PyTuple_New(1);
  PyTuple_SetItem(pArgs, 0, Py_BuildValue("i", 1));
  PyObject* pResult = PyObject_CallObject(g_pPythonFunction_FextAction, pArgs);
    //开始处理返回值。具体含义看注释。通过运行测试。
    PyArrayObject* pContArray = PyArray_GETCONTIGUOUS((PyArrayObject*)pResult);
    float* pDataPtr = (float*)PyArray_DATA(pContArray);
    //数组多少个维度?
    int num_dim = PyArray_NDIM(pContArray);
    //每个维度的长度
    npy_intp* pDim = PyArray_DIMS(pContArray);
    //得到元素总数
    int nDataCount = 1;
    for (int i = 0; i < num_dim; i++)
    {
        nDataCount *= pDim[i];
    }
    GH_LOG_INFO("num_dim=%d, nDataCount=%d", num_dim, nDataCount);
    //输出前4个
    for (int i = 0; i < 4; i++)
    {
        GH_LOG_INFO("data[%d]=%f", i, pDataPtr[i]);
    }
    //输出后4个
    for (int i = nDataCount-4; i < nDataCount; i++)
    {
        GH_LOG_INFO("data[%d]=%f", i, pDataPtr[i]);
    }
  Py_DECREF(pContArray);
  Py_DECREF(pResult);
  Py_DECREF(pArgs);
  return 0;
}
目录
相关文章
|
17小时前
|
Python
【Python进阶(六)】——随机数与数组
【Python进阶(六)】——随机数与数组
|
1天前
|
数据采集 JSON API
【2024-简洁版】python爬虫 批量查询自己所有CSDN文章的质量分:方便快速上手修改代码
【2024-简洁版】python爬虫 批量查询自己所有CSDN文章的质量分:方便快速上手修改代码
8 0
|
2天前
|
Python
Python中的装饰器:提升代码可读性与复用性
Python中的装饰器是一种强大的工具,能够提升代码的可读性和复用性。本文将深入探讨装饰器的原理、用法以及在实际项目中的应用,帮助读者更好地理解和利用这一特性,提升代码质量和开发效率。
|
2天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
Python深度学习基于Tensorflow(1)Numpy基础
Python深度学习基于Tensorflow(1)Numpy基础
14 4
|
3天前
|
监控 Python
Python中的装饰器:提升代码可读性与可维护性
Python中的装饰器是一种强大的工具,可以在不修改函数源代码的情况下,增加新的功能。本文将介绍装饰器的基本概念,以及如何使用装饰器来提升代码的可读性和可维护性。通过实例演示,读者将了解装饰器在各种场景下的灵活运用,从而更好地理解并应用于实际开发中。
|
3天前
|
缓存 Python
Python中的装饰器:提升代码可读性与灵活性
在Python编程中,装饰器是一种强大的工具,可以通过在函数或方法周围包装额外的功能来提升代码的可读性和灵活性。本文将深入探讨装饰器的概念、用法和实际应用,帮助读者更好地理解并运用这一Python编程的利器。
|
4天前
|
缓存 并行计算 Serverless
优化Python代码性能的5个技巧
在日常Python编程中,代码性能的优化是一个重要的议题。本文介绍了5个实用的技巧,帮助你提高Python代码的执行效率,包括使用适当的数据结构、优化循环结构、利用内置函数、使用生成器表达式以及并行化处理。通过这些技巧,你可以更高效地编写Python代码,提升程序的性能和响应速度。
|
4天前
|
存储 索引 Python
NumPy 数组切片及数据类型介绍
了解 NumPy 数组切片,用于从数组中提取子集。一维数组切片使用 `start:end:step`,如 `arr[1:5]`。二维数组切片如 `arr[1:3, 0:3]`。创建 5x5 数组并练习切片,例如打印第一行、第二列、对角线元素和 2x2 子数组。别忘了检查数据类型,如 `arr.dtype`,并使用 `astype()` 转换类型。
19 0
|
5天前
|
Python
探索Python中的装饰器:提升代码灵活性与可维护性
Python中的装饰器是一种强大的工具,可以在不改变原有代码结构的情况下,动态地添加功能或修改函数的行为。本文将深入探讨装饰器的原理、常见用法以及如何利用装饰器提升代码的灵活性和可维护性。
|
5天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码