Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
W
wendelin.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Joshua
wendelin.core
Commits
33ff0c80
Commit
33ff0c80
authored
Oct 29, 2018
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
b4a3a0bd
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
16 deletions
+17
-16
lib/tests/test_xnumpy.py
lib/tests/test_xnumpy.py
+10
-10
lib/xnumpy.py
lib/xnumpy.py
+7
-6
No files found.
lib/tests/test_xnumpy.py
View file @
33ff0c80
...
...
@@ -20,7 +20,7 @@
from
numpy
import
ndarray
,
arange
,
dtype
,
int32
from
numpy.lib.stride_tricks
import
DummyArray
from
wendelin.lib.xnumpy
import
restructure
from
wendelin.lib.xnumpy
import
structured
from
pytest
import
raises
# xbase returns original object from which arr was _as_strided viewed.
...
...
@@ -32,8 +32,8 @@ def xbase(arr):
b
=
b
.
base
# -> origin
return
b
#
XXX text
def
test_
restructure
():
#
verifies xnumpy.structured()
def
test_
structured
():
dtxy
=
dtype
([(
'x'
,
int32
),
(
'y'
,
int32
)])
# C order
...
...
@@ -44,14 +44,14 @@ def test_restructure():
# 9 10 11
with
raises
(
ValueError
,
match
=
"minor-axis is not C-contiguous: stride
\
(-
4
\
) <
0
"
):
restructure
(
a
[:
3
,:
2
][:,::
-
1
],
dtxy
)
structured
(
a
[:
3
,:
2
][:,::
-
1
],
dtxy
)
with
raises
(
ValueError
,
match
=
"minor-axis is not C-contiguous: stride
\
(8
\
) != itemsize
\
(
4
\
)
"
):
restructure
(a[:,::2], dtxy)
structured
(a[:,::2], dtxy)
with raises(ValueError, match="
dtype
.
itemsize
\
(
8
\
)
!=
sizeof
\
(
minor
-
axis
\
)
\
(
12
\
)
"):
restructure
(a, dtxy)
structured
(a, dtxy)
b = a[:3,:2]
bxy =
restructure
(b, dtxy)
bxy =
structured
(b, dtxy)
assert xbase(bxy) is b
assert bxy.dtype == dtxy
assert bxy.shape == (3,)
...
...
@@ -77,7 +77,7 @@ def test_restructure():
# 6 7 8
# 9 10 11
b = a[:3,:2][::-1,:]
bxy =
restructure
(b, dtxy)
bxy =
structured
(b, dtxy)
assert xbase(bxy) is b
assert bxy.dtype == dtxy
assert bxy.shape == (3,)
...
...
@@ -104,7 +104,7 @@ def test_restructure():
# 2 6 10
# 3 7 11
b = a[:2,:3]
bxy =
restructure
(b, dtxy)
bxy =
structured
(b, dtxy)
assert xbase(bxy) is b
assert bxy.dtype == dtxy
assert bxy.shape == (3,)
...
...
@@ -136,7 +136,7 @@ def test_restructure():
a = a.view(type=MyArray)
b = a[:3,:2]
bxy =
restructure
(b, dtxy)
bxy =
structured
(b, dtxy)
assert xbase(bxy) is b
assert bxy.dtype == dtxy
assert bxy.shape == (3,)
...
...
lib/xnumpy.py
View file @
33ff0c80
...
...
@@ -60,11 +60,12 @@ def _as_strided(arr, shape, stridev, dtype):
# we are done
return
a
# restructure creates view of the array interpreting its minor axis as fully covered by dtype.
# structured creates view of the array interpreting its minor axis as fully covered by dtype.
#
# The minor axis of the array must be C-contiguous and be of dtype.itemsize in size.
#
#
Restructure
is similar to arr.view(dtype) + corresponding reshape, but does
#
Structured
is similar to arr.view(dtype) + corresponding reshape, but does
# not have limitations of ndarray.view(). For example:
#
# In [1]: a = np.arange(3*3, dtype=np.int32).reshape((3,3))
...
...
@@ -86,7 +87,7 @@ def _as_strided(arr, shape, stridev, dtype):
#
# In [6]: dtxy
# Out[6]: dtype([('x', '<i4'), ('y', '<i4')])
#
# In [7]: b.view(dtxy)
# ---------------------------------------------------------------------------
# ValueError Traceback (most recent call last)
...
...
@@ -95,11 +96,11 @@ def _as_strided(arr, shape, stridev, dtype):
#
# ValueError: To change to a dtype of a different size, the array must be C-contiguous
#
# In [8]:
restructure
(b, dtxy)
# In [8]:
structured
(b, dtxy)
# Out[8]: array([(0, 1), (3, 4)], dtype=[('x', '<i4'), ('y', '<i4')])
#
#
Restructure
always creates view and never copies data.
def
restructure
(
arr
,
dtype
):
#
Structured
always creates view and never copies data.
def
structured
(
arr
,
dtype
):
dtype
=
np
.
dtype
(
dtype
)
# convenience
atype
=
arr
.
dtype
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment