summaryrefslogtreecommitdiff
path: root/numpy/add_newdocs.py
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2013-02-28 19:34:59 -0800
committerCharles Harris <charlesr.harris@gmail.com>2013-02-28 19:34:59 -0800
commit48df79673f81a8421421233e26f663f260bcebfd (patch)
tree1fd3d59cdc7f9c10d09bc114fee0338b68718bb4 /numpy/add_newdocs.py
parent5ce8e28a97210fac9f244e79c186433cd373999d (diff)
parent83e39633d94ddca717ae50692b013ae7ffc39459 (diff)
downloadnumpy-48df79673f81a8421421233e26f663f260bcebfd.tar.gz
Merge pull request #2967 from sbyrnes321/master
DOC -- add another paragraph note to ndarray.view docs
Diffstat (limited to 'numpy/add_newdocs.py')
-rw-r--r--numpy/add_newdocs.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/numpy/add_newdocs.py b/numpy/add_newdocs.py
index 26711f177..35555a77a 100644
--- a/numpy/add_newdocs.py
+++ b/numpy/add_newdocs.py
@@ -4460,6 +4460,15 @@ add_newdoc('numpy.core.multiarray', 'ndarray', ('view',
(same shape, dtype, etc.) This does not cause a reinterpretation of the
memory.
+ For ``a.view(some_dtype)``, if ``some_dtype`` has a different number of
+ bytes per entry than the previous dtype (for example, converting a
+ regular array to a structured array), then the behavior of the view
+ cannot be predicted just from the superficial appearance of ``a`` (shown
+ by ``print(a)``). It also depends on exactly how ``a`` is stored in
+ memory. Therefore if ``a`` is C-ordered versus fortran-ordered, versus
+ defined as a slice or transpose, etc., the view may give different
+ results.
+
Examples
--------
@@ -4501,6 +4510,22 @@ add_newdoc('numpy.core.multiarray', 'ndarray', ('view',
>>> z[0]
(9, 10)
+ Views that change the dtype size (bytes per entry) should normally be
+ avoided on arrays defined by slices, transposes, fortran-ordering, etc.:
+
+ >>> x = np.array([[1,2,3],[4,5,6]], dtype=np.int16)
+ >>> y = x[:, 0:2]
+ >>> y
+ array([[1, 2],
+ [4, 5]], dtype=int16)
+ >>> y.view(dtype=[('width', np.int16), ('length', np.int16)])
+ Traceback (most recent call last):
+ File "<stdin>", line 1, in <module>
+ ValueError: new type not compatible with array.
+ >>> z = y.copy()
+ >>> z.view(dtype=[('width', np.int16), ('length', np.int16)])
+ array([[(1, 2)],
+ [(4, 5)]], dtype=[('width', '<i2'), ('length', '<i2')])
"""))