I&#39;m deeply puzzled by the recently changed behavior of zero-rank memmaps. I think this change happened from version 1.6.0 to 1.6.1, which I&#39;m currently using.<div><br></div><div><div>&gt;&gt;&gt; import numpy as np</div>
</div><div><br></div><div>Create a zero-rank memmap.</div><div><br></div><div><div>&gt;&gt;&gt; x = np.memmap(filename=&#39;/tmp/m&#39;, dtype=float, mode=&#39;w+&#39;, shape=())</div></div><div><br></div><div>Give it a value:</div>
<div><br></div><div><div>&gt;&gt;&gt; x[...] = 22</div><div>&gt;&gt;&gt; x</div><div>memmap(22.0)</div></div><div><br></div><div>So far so good. But now:</div><div><br></div><div><div>&gt;&gt;&gt; b = (x + x) / 1.5</div><div>
&gt;&gt;&gt; b</div><div>memmap(29.333333333333332)</div></div><div><br></div><div>WT.? Why is the result of this calculation a memmap?</div><div><br></div><div>It even thinks that it&#39;s still linked to the file, but it&#39;s not:</div>
<div><div><br></div><div>&gt;&gt;&gt; b.filename</div><div>&#39;/tmp/m&#39;</div></div><div><br></div><div>If I try this with arrays then I don&#39;t get this weird behavior:</div><div><br></div><div><div>&gt;&gt;&gt; a = np.array(2, dtype=float)</div>
</div><div><br></div><div><div>&gt;&gt;&gt; (a + a) / 2.5</div><div>1.6000000000000001</div></div><div><br></div><div>which gives me a Python float, not a zero-rank array.</div><div><br></div><div>Why does the memmap behave like that? Why do I get a memmap even though it&#39;s not connected to any file?</div>
<div><br></div><div>Regards,</div><div><br></div><div>Wim</div>