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

Attachment: 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

Reply via email to