चलाने पर पाइथन रनटाइम त्रुटि मैं अपने सी ++ कोड से "टी-टेस्ट" की गणना करने के लिए एक पायथन फ़ंक्शन को कॉल कर रहा हूं।टी-टेस्ट
#include <iostream>
#include "Python.h"
#include "/usr/local/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h"
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
int main(int argc, char** argv)
{
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\"PATH_TO_MOD\")");
PyObject *pName = PyString_FromString("tmpPyth");
PyObject *pModule = PyImport_Import(pName);
double arr[] ={9.74219, 10.2226, 8.7469, 8.69791, 9.96442, 9.96472, 9.37913, 9.75004};
double arr1[] ={9.74219, 10.2226, 8.7469, 8.69791, 9.96442, 9.96472, 9.37913, 9.75004};
PyObject *lst = PyList_New(8);
PyObject *lst1 = PyList_New(8);
// if (!lst)
// return NULL;
for (int i = 0; i < 8; i++) {
PyObject *num = PyFloat_FromDouble(arr[i]);
PyObject *num1 = PyFloat_FromDouble(arr1[i]);
PyList_SET_ITEM(lst, i, num);
PyList_SET_ITEM(lst1, i, num1);
}
PyObject *pArgs = PyTuple_New(2);
PyTuple_SetItem(pArgs, 0, lst);
PyTuple_SetItem(pArgs, 1, lst1);
if (pModule != NULL) {
PyObject *pFunc = PyObject_GetAttrString(pModule, "blah");
if(pFunc != NULL){
PyObject_CallObject(pFunc, pArgs);
}
}
else
std::cout << "Module path provided may be wrong. Module not found.\n\n";
return 0;
}
और मेरे अजगर मॉड्यूल इस प्रकार परिभाषित किया गया है:: समारोह कॉल के रूप में निम्नानुसार किया जाता है
import numpy
import scipy
import matplotlib
from scipy import stats
def blah(baseline, follow_up):
paired_sample = stats.ttest_rel(baseline , follow_up)
print "The t-statistic is %.3f and the p-value is %.3f." % paired_sample
अब जब मैं इस चलाने का प्रयास मैं निम्नलिखित क्रम अपवाद:
/usr/local/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/stats/stats.py:3458: RuntimeWarning: invalid value encountered in divide
t = np.divide(dm, denom)
लेकिन अगर मैं स्पष्ट रूप से एक सूची परिभाषित करता हूं और "टी-टेस्ट" फ़ंक्शन को निष्पादित करता हूं और निष्पादित करता हूं तो यह ठीक है। चल समारोह परिभाषा इस प्रकार है:
import numpy
import scipy
import matplotlib
from scipy import stats
def blah():
baseline = [9.74219, 10.2226, 8.7469, 8.69791, 9.96442, 9.96472, 9.37913, 9.75004]
follow_up = [9.94227,9.46763,8.53081,9.43679,9.97695,10.4285,10.159,8.86134]
paired_sample = stats.ttest_rel(baseline , follow_up)
print "The t-statistic is %.3f and the p-value is %.3f." % paired_sample
मैं यह सोचते हैं कि मैं सूचियों अजगर स्क्रिप्ट को पास किए जाने को परिभाषित करने में कुछ गलती कर रहा हूं, लेकिन क्या पता नहीं कर सकते हैं। किसी भी सहायता की सराहना की जाएगी।
ऐसा कुछ भी नहीं है जो आपके विवरण को पढ़ने से मुझ पर कूदता है, इसलिए यह ध्वनि दिखता है। जिज्ञासा के लिए, आप 'blah()' कहते हैं और त्रुटि 'numpy.stats() 'में है,' blah()' में आने वाले मान क्या हैं? उनके प्रतिनिधित्व को आउटपुट करने के लिए 'प्रिंट रिप्र (बेसलाइन)' और 'प्रिंट रिप्र (follow_up)' का उपयोग करें। उस ने कहा, तुम अभी भी पाइथन 2 का उपयोग क्यों करते हो? कम से कम वर्तमान पाइथन में बेवकूफ भी उपलब्ध है। –
हम्म, शायद एक बेवकूफ सवाल है, लेकिन क्या आपने पूर्व-मौजूदा [एससीपीई से टी-टेस्ट] का उपयोग करने पर विचार किया था (http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_ind.html) उन्हें फिर से लागू करने के बजाय? – mtzl