簡體   English   中英

如何為 function arguments 命名 - 寫為 ZA7F5F35426B52741173ZB9231 的 C++ 擴展?

[英]How to give a name to an function arguments - written as C++ extension for Python?

這是我的問題的屏幕截圖: 在此處輸入圖像描述

I've written a function in C++ to extend my Python module, but when i try to call this function in Python despite argument name which is "labels_list" i see "*args, **kwargs". 我能以某種方式改變它嗎?

static PyObject* encode_one_hot(PyObject* self, PyObject* args, PyObject* kwargs) {

PyArrayObject* labels = NULL;
PyArrayObject* one_hot;

npy_intp dims[2];

map<int, int> classes_map;

int current_label;
int labels_size;

int new_numeration = 0;

void* ptr;

static char* kwlist[] = { (char*)"labels_list", NULL };

if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O", kwlist, &labels))
    return NULL;


PyArray_Sort(labels, 0, NPY_QUICKSORT);

labels_size = PyArray_SIZE(labels);

for (int i = 0; i < labels_size; i++) {
    ptr = PyArray_GETPTR1(labels, i);
    current_label = PyLong_AsLong(PyArray_GETITEM(labels, ptr));

    if (classes_map.find(current_label) == classes_map.end()) {
        classes_map[current_label] = new_numeration;
        new_numeration++;
    }
}

dims[0] = labels_size;
dims[1] = (int)classes_map.size();

one_hot = (PyArrayObject*)PyArray_ZEROS(2, dims, NPY_INT, 0);

for (int i = 0; i < labels_size; i++) {
    current_label = classes_map[PyLong_AsLong(PyArray_GETITEM(labels, PyArray_GETPTR1(labels, i)))];
    ptr = PyArray_GETPTR2(one_hot, i, current_label);

    PyArray_SETITEM(one_hot, ptr, PyLong_FromLong(1));
}     
return PyArray_Return(one_hot); }

我通過 2 小時的探索 matplotlib github 回購解決了這個問題:D

如果你想命名你的 function 參數,你應該這樣做:

截屏

您只需在“ml_doc”字段的頂部輸入“your_function_name(arguments_names)”,僅此而已。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM