[Numpy-discussion] documentation suggestion

Pauli Virtanen pav@iki...
Mon Apr 13 12:17:26 CDT 2009


Sun, 12 Apr 2009 17:32:31 -0400, Neal Becker wrote:
[clip]
> Done, but can someone check that what I wrote is accurate?  I wrote that
> changes to the ndarray will change the underlying buffer object.  But,
> the buffer protocol allows for read-only buffers.  Not sure what ndarray
> would do if you tried to write in that case.

For read-only buffers, the new array will not be writeable:

>>> x="abcde"
>>> z=np.ndarray((5,), buffer=x, dtype='1S')
>>> z[0] = 'x'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: array is not writeable

However, you can override this, and misusing it potentially leads to 
nasty things:

>>> x="abcde"
>>> y="abcde"
>>> z=np.ndarray((5,), buffer=x, dtype='1S')
>>> z.flags.writeable = True
>>> z[0] = 'x'
>>> x
'xbcde'
>>> y
'xbcde'
>>> hash(x)
-1332677140
>>> hash("abcde")
-1332677140

Hashing breaks, and the assumed immutability of strings causes nonlocal 
effects!

    ***

However, for some reason, I don't see your contribution in the change 
list:

	http://docs.scipy.org/numpy/changes/

Can you check if the change you made went through? What page did you edit?

-- 
Pauli Virtanen



More information about the Numpy-discussion mailing list