Встраивание Python в C++: невозможно преобразовать строку или char * в массив numpy

Я очень новичок в идее встраивания Python в C++. Я столкнулся со следующей проблемой:

Я следую документации и могу преобразовать свои строковые данные в объект python, а затем вызвать функцию Python, используя код, похожий на:

const char* blu = "1,2,3,4,5,6,7,8,9" ;

//converting to python object : 
args = Py_BuildValue("(s)", blu);

if (!args)
{
    PyErr_Print();
    Py_DECREF(filterFunc);
    qDebug()<< "Error building args tuple";
}

resultObj = PyObject_CallObject(filterFunc, args);

Я также могу распечатать строку из консоли python. Я бы предположил, что данные передаются на сторону Python. Тип (строка) в питоне возвращает «тип str». Моя проблема связана с кодом на стороне Python:

import numpy as np

def attoMainFunction2(Image1, Apod = 0, Z_PadInput = 0, requiredpaddingPTR = 0,FLAGInterferogramCalibration = 0, InterferogramCorrFactorinput = 0):
    stringPassedFromC = np.fromstring(Image1,dtype=int,sep=',')
    # Further Operations with the Array.Not yet implemented.
    # return the results as a string cout.
    cout = "0"
    return cout

Я получаю следующую ошибку:

File "/Users/devas/PycharmProjects/Vis/MainFile.py", line 260, in attoMainFunction2
np.fromstring(Image1,dtype=int,sep=',')
AttributeError: 'NoneType' object has no attribute 'fromstring'
Error invoking 'filterFunc'

Если я использую тот же код Python и передаю ему строку из другой функции Python. Работает нормально. Я что-то упускаю?

Пожалуйста, предложите.

Спасибо заранее.

Пожалуйста, покажите полный (но минимальный) пример кода Python. Ошибка не имеет ничего общего со строками, а связана с тем, что есть np. Решение будет заключаться в том, чтобы выяснить, почему это None.

kazemakase 27.03.2018 08:56

Привет, Kazemakase .. Я отредактировал свой код, чтобы сделать его более читабельным. Честно говоря, я еще не так много сделал в коде Python, чтобы показать. На данный момент я просто запускаю одну строку кода, которая называется np.fromstring (...). Могу я также отметить, что если я сразу напечатаю длину, тип или всю строку, я получаю желаемый результат

Alok 27.03.2018 09:30

Спасибо за редактирование. Я не могу поверить, что это полный код, который действительно вызывает эту ошибку. В сообщении об ошибке написано, что вы пытаетесь сделать аналог None.fromstring. Это означает np is None. Вам нужно выяснить, почему.

kazemakase 27.03.2018 09:35
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
285
0

Другие вопросы по теме