- Tìm số 0 đầu tiên trong một mảng bit
- Unix Hiển thị thông tin về các tập tin khớp với một trong hai mẫu
- Biểu thức chính quy thay thế nhiều tệp
- Ẩn lệnh từ xtrace
我知道这个问题已经回答了很多次,我也阅读了文档,但我仍然无法清楚地理解它是如何工作的。就像,我无法理解这些值是如何填充到它的参数中的。这些例子不是很清楚地解释它(或者可能是我不能)。谁能帮我理解这个函数的参数是如何填充的?他们的值(value)观应该是什么?我必须在不重新分配内存的情况下将 vector 从 C++ 传递到 Python。任何帮助深表感谢。很多天以来,我一直坚持这一点。
我正在执行的代码:
int main(int argc, char *argv[])
{
PyObject *pName, *pModule, *pDict, *pFunc, *pValue, *pArgs,*pXVec,*c, *xarr1;
int i;
float fArray[5] = {0,1,2,3,4};
//float *p = &fArray[0] ;
npy_intp m = 5;
//void* PyArray_GetPtr(PyArrayObject* aobj, npy_intp* ind)¶
// Initialize the Python Interpreter
Khởi tạo Py();
PySys_SetArgv(argc, argv);
// Build the name object
pName = PyString_FromString(argv[1]);
// Load the module object
pModule = PyImport_Import(pName);
printf("check0\n");
// pDict is a borrowed reference
pDict = PyModule_GetDict(pModule);
printf("check1\n");
// pFunc is also a borrowed reference
pFunc = PyDict_GetItemString(pDict, argv[2]);
printf("check2\n");
// if (PyCallable_Check(pFunc))
// {
// Prepare the argument list for the call
//xarr1 = PyFloat_FromDouble(xarr[1]);
printf("check3\n");
c = PyArray_SimpleNewFromData(1,&m,NPY_FLOAT,(void *)fArray);
printf("check3\n");
pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs,0, c);
pValue = PyObject_CallObject(pFunc, pArgs);
if (pArgs != NULL)
{
Py_DECREF(pArgs);
}
//}
// else
// {
// PyErr_Print();
// }
// Clean up
Py_DECREF(pModule);
Py_DECREF(pName);
// Finish the Python Interpreter
Py_Hoàn tất();
trả về 0;
}
1 Câu trả lời
chức nănglà :
PyObject *
PyArray_SimpleNewFromData(
int nd,
npy_intp* dims,
int typenum,
void* data)
最后一个参数 (dữ liệu
) 是数据的缓冲区。让我们放弃它。
第二个参数(dims
)是一个缓冲区,它的每个条目都是一个维度;所以对于一维数组,它可以是一个长度为 1 的缓冲区(或者甚至是一个整数,因为每个整数都是一个长度为 1 的缓冲区)
由于第二个参数是一个缓冲区,第一个参数 (nd
) 告诉它的长度
第三个参数(typenum
)表示类型。
例如,假设您在 x
处有 4 个 64 位整数:
要创建一个数组,使用
int dims[1];
dims[0] = 4;
PyArray_SimpleNewFromData(1, dims, NPY_INT64, x)
要创建 2X2 矩阵,请使用
int dims[2];
dims[0] = dims[1] = 2;
PyArray_SimpleNewFromData(2, dims, NPY_INT64, x)
关于python - PyArray_SimpleNewFromData 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30357115/
所以我试图编写一个 C 函数,它接受一个 numpy 数组对象,提取数据,进行一些操作并返回另一个 c 数组作为一个 numpy 数组对象。一切都无缝运行,我使用 python 包装器,这有助于在 p
我的问题“在精神上”类似于Segmentation fault in PyArray_SimpleNewFromData 我有一个看起来像这样的 C 代码:(原始代码实际测试 malloc() 是否返
我知道这个问题已经回答了很多次,我也阅读了文档,但我仍然无法清楚地理解它是如何工作的。就像,我无法理解这些值是如何填充到它的参数中的。这些例子不是很清楚地解释它(或者可能是我不能)。谁能帮我理解这个函
我正在尝试在 python 的 C 扩展中使用 NumPy。 我遇到了无法解释的段错误,我已将其缩小到这个简单的示例。 #include "numpy/arrayobject.h" int main(
numpy C API 文档给出了这个签名: PyObject* PyArray_SimpleNewFromData(int nd, npy_intp* dims, int typenum, void
我编写了一个简单的 Python 扩展模块来模拟 3 位模数转换器。它应该接受一个 float 组作为输入以返回相同大小的输出数组。输出实际上由量化的输入数字组成。这是我的(简化的)模块: stati
我尝试做一个 python 包装器来将一些 C++ 函数和类型绑定(bind)到 python。我的问题是当我尝试将自定义矩阵类型转换为 numpy ndarray 时。最有说服力的解决方案是使用 P
我有一个一维 float 组(来自 C 空间),我想用零拷贝在 python 空间中读取它。到目前为止,我所做的(主要是阅读 SO)是: // wrap c++ array as numpy arra
Tôi là một lập trình viên xuất sắc, rất giỏi!