<div dir="ltr">Amazing! It works! Thank you Robert.<div><br></div><div>I've been stuck with this many days. </div><div><br></div><div>Best,</div><div>Jialin</div><div>LBNL/NERSC</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 30, 2018 at 10:52 PM, Robert Kern <span dir="ltr"><<a href="mailto:robert.kern@gmail.com" target="_blank">robert.kern@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class=""><div class="gmail_quote">On Wed, Jan 31, 2018 at 3:25 PM, Jialin Liu <span dir="ltr"><<a href="mailto:jalnliu@lbl.gov" target="_blank">jalnliu@lbl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Hello, </span><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">I'm extending C with python (which is opposite way of what people usually do, extending python with C), I'm currently stuck in passing a C array to python layer, could anyone plz advise?</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">I have a C buffer in my C code and want to pass it to a python function. In the C code, I have:</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><br></div><blockquote class="gmail_quote" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">npy_intp  dims [2];<br>dims[0] = 10;<br>dims[1] = 20; <br>import_array();<br>npy_intp m=2;<br>PyObject * py_dims = PyArray_SimpleNewFromData(1, &m, NPY_INT16 ,(void *)dims ); // I also tried NPY_INT<br>PyObject_CallMethod(pInstance, method_name, "O", py_dims);</blockquote><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"> </div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><div>In the Python code, I want to just print that array:</div><div><br></div><div><span></span><p class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-p1" style="margin:0px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:normal;font-family:Menlo;background-color:rgb(255,255,255)"><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s1" style="color:rgb(175,173,36);font-variant-ligatures:no-common-ligatures">def</span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s2" style="font-variant-ligatures:no-common-ligatures"><font color="#000000"> </font><font color="#33bbc8">f</font></span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s2" style="color:rgb(0,0,0);font-variant-ligatures:no-common-ligatures">(self, dims):</span></p><p class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-p1" style="margin:0px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:normal;font-family:Menlo;background-color:rgb(255,255,255)"><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s2" style="color:rgb(0,0,0);font-variant-ligatures:no-common-ligatures">   </span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s1" style="font-variant-ligatures:no-common-ligatures;color:rgb(51,187,200)">print</span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><span> </span>(</span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s3" style="color:rgb(195,55,32);font-variant-ligatures:no-common-ligatures">"np array:%d,%d"</span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">%(dims[</span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s3" style="color:rgb(195,55,32);font-variant-ligatures:no-common-ligatures">0</span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">],dims[</span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s3" style="color:rgb(195,55,32);font-variant-ligatures:no-common-ligatures">1</span><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">])<wbr>)</span></p><p class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-p1" style="margin:0px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:normal;font-family:Menlo;background-color:rgb(255,255,255)"><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><br></span></p><p class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-p1" style="margin:0px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:normal;font-family:Menlo;background-color:rgb(255,255,255)"><span class="m_-4902019572738754052m_5790080173538862426gmail-m_8269879161195936149gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><br></span></p>But it only prints the first number correctly, i.e., dims[0]. The second number is always 0.<span> </span><br></div></div></div></blockquote></div><div class="gmail_extra"><br></div></span>The correct typecode would be NPY_INTP.<span class="HOEnZb"><font color="#888888"><br clear="all"><div><br></div>-- <br><div class="m_-4902019572738754052gmail_signature" data-smartmail="gmail_signature">Robert Kern</div>
</font></span></div></div>
<br>______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
<br></blockquote></div><br></div>