summaryrefslogtreecommitdiff
path: root/numpy/core/_internal.py
diff options
context:
space:
mode:
authorjayvius <jay.bourque@continuum.io>2012-07-12 13:37:28 -0500
committerJay Bourque <jay.bourque@continuum.io>2012-07-17 16:05:10 -0500
commit0c09e1f184fde335f3533b0b9ef6ea46379309db (patch)
tree9ce5e71a40fdae4e7d1cedc86d0c523c1213ebf7 /numpy/core/_internal.py
parent6363bb7cbb1d0e292e8af87f92a28faf781d3d95 (diff)
downloadnumpy-0c09e1f184fde335f3533b0b9ef6ea46379309db.tar.gz
fix previous commit to return copy of view instead of view
Diffstat (limited to 'numpy/core/_internal.py')
-rw-r--r--numpy/core/_internal.py17
1 files changed, 4 insertions, 13 deletions
diff --git a/numpy/core/_internal.py b/numpy/core/_internal.py
index 29d21a9bc..88a41fd0d 100644
--- a/numpy/core/_internal.py
+++ b/numpy/core/_internal.py
@@ -286,26 +286,17 @@ def _newnames(datatype, order):
# construct a new array with just those fields copied over
def _index_fields(ary, fields):
from multiarray import empty, dtype
+ from numpy import copy
dt = ary.dtype
- new_dtype = [(name, dt[name]) for name in fields if name in dt.names]
- if ary.flags.f_contiguous:
- order = 'F'
- else:
- order = 'C'
-
- newarray = empty(ary.shape, dtype=new_dtype, order=order)
-
- for name in fields:
- newarray[name] = ary[name]
names = [name for name in fields if name in dt.names]
- formats = dt.fields[name][0] for name in fields if name in dt.names]
+ formats = [dt.fields[name][0] for name in fields if name in dt.names]
offsets = [dt.fields[name][1] for name in fields if name in dt.names]
- view_dtype = {'names':names, 'formats':formats, 'offsets':offsets}
+ view_dtype = {'names':names, 'formats':formats, 'offsets':offsets, 'itemsize':dt.itemsize}
view = ary.view(dtype=view_dtype)
- return newarray
+ return copy(view)
# Given a string containing a PEP 3118 format specifier,
# construct a Numpy dtype