This is an automated email from the ASF dual-hosted git repository. jxie pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git
The following commit(s) were added to refs/heads/master by this push: new 6f6a1dc [MXNET-291] Fix an ndarray indexing bug with index -1 (#10440) 6f6a1dc is described below commit 6f6a1dc4d350dcec3058abbe4ca5123b5fce536e Author: Deokjae Lee <36436141+asitsta...@users.noreply.github.com> AuthorDate: Sat Apr 7 08:14:35 2018 +0900 [MXNET-291] Fix an ndarray indexing bug with index -1 (#10440) * Fix an ndarray indexing bug with index -1 * Add tests for ndarray slicing with negative index * Test revise --- python/mxnet/ndarray/ndarray.py | 2 +- tests/python/unittest/test_ndarray.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/python/mxnet/ndarray/ndarray.py b/python/mxnet/ndarray/ndarray.py index cbb1dd5..4677189 100644 --- a/python/mxnet/ndarray/ndarray.py +++ b/python/mxnet/ndarray/ndarray.py @@ -797,7 +797,7 @@ fixed-size items. for i, slice_i in enumerate(key): if isinstance(slice_i, integer_types): begin.append(slice_i) - end.append(slice_i+1) + end.append(slice_i+1 if slice_i != -1 else self.shape[i]) step.append(1) elif isinstance(slice_i, py_slice): if slice_i.step == 0: diff --git a/tests/python/unittest/test_ndarray.py b/tests/python/unittest/test_ndarray.py index 89b037b..4265bf8 100644 --- a/tests/python/unittest/test_ndarray.py +++ b/tests/python/unittest/test_ndarray.py @@ -349,7 +349,7 @@ def test_ndarray_slice(): A = mx.nd.array(np.random.uniform(-10, 10, shape)) A2 = A.asnumpy() assert same(A[3:8].asnumpy(), A2[3:8]) - A2[3:8] *= 10; + A2[3:8] *= 10 A[3:8] = A2[3:8] assert same(A[3:8].asnumpy(), A2[3:8]) @@ -360,11 +360,19 @@ def test_ndarray_slice(): assert same(A[1,3:4,:,1:5].asnumpy(), A2[1,3:4,:,1:5]) assert A[1,2,3,4,5].asscalar() == A2[1,2,3,4,5] + assert A[-1,-2,-3,-4,-5].asscalar() == A2[-1,-2,-3,-4,-5] a = mx.nd.array([[0, 1], [2, 3]]) assert (a[[1, 1, 0], [0, 1, 0]].asnumpy() == [2, 3, 0]).all() assert (a[mx.nd.array([1, 1, 0]), mx.nd.array([0, 1, 0])].asnumpy() == [2, 3, 0]).all() + shape = (4, 4) + A = mx.nd.random.uniform(shape=shape) + A2 = A.asnumpy() + for i in range(-4, 0): + assert A[i, i].asscalar() == A2[i, i] + assert same(A[:, i].asnumpy(), A2[:, i]) + assert same(A[i, :].asnumpy(), A2[i, :]) @with_seed() def test_ndarray_crop(): -- To stop receiving notification emails like this one, please contact j...@apache.org.