Hi there, I have a question concerning the numpy iterator C-API. I want to create a numpy string array using NPY_OBJECT as a datatype for creating the array (the reason I am going for this approach is that I do not know the length of the individual strings at the time I construct the array, I only know its shape). The original strings are stored in a std::vector<char*> instance. The approach I took was something like this
std::vector<char*> buffer = ....; NpyIter *iter = NpyIter_New(numpy_array, NPY_ITER_READWRITE | NPY_ITER_C_INDEX | NPY_ITER_REFS_OK, NPY_CORDER , NPY_NO_CASTING,nullptr); if(iter==NULL) { return; } NpyIter_IterNextFunc *iternext = NpyIter_GetIterNext(iter,nullptr); if(iternext == NULL) { std::cerr<<"Could not instantiate next iterator function"<<std::endl; return; } PyObject **dataptr = (PyObject**)NpyIter_GetDataPtrArray(iter); for(auto string: buffer) { dataptr[0] = PyString_FromSting(string); // this string construction seem to work iternext(iter); } NpyIter_Deallocate(iter); This code snippet is a bit stripped down with all the safety checks removed to make things more readable. However, the array I get back still contains only a None instance. Does anyone have an idea what I am doing wrong here? Thanks in advance. best regards Eugen
signature.asc
Description: This is a digitally signed message part
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion