diff options
author | Julian Taylor <jtaylor.debian@googlemail.com> | 2014-09-02 23:26:56 +0200 |
---|---|---|
committer | Julian Taylor <jtaylor.debian@googlemail.com> | 2014-09-02 23:26:56 +0200 |
commit | ef101b864487f2e0dfe0901fa1e11a727f6ac5a2 (patch) | |
tree | e8ae0a4200561b835939254d1bb510c52438ad4c | |
parent | 36d947fe379e7534624328f7382e4e1175823170 (diff) | |
parent | f880b1aa7583d7c3dfc111a8b79e7e7ba364baf2 (diff) | |
download | numpy-ef101b864487f2e0dfe0901fa1e11a727f6ac5a2.tar.gz |
Merge pull request #5022 from seberg/structured-insert
BUG: Fix np.insert for inserting a single item into a structured array
-rw-r--r-- | numpy/lib/function_base.py | 4 | ||||
-rw-r--r-- | numpy/lib/tests/test_function_base.py | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/numpy/lib/function_base.py b/numpy/lib/function_base.py index 257057666..3074a2f70 100644 --- a/numpy/lib/function_base.py +++ b/numpy/lib/function_base.py @@ -3763,7 +3763,9 @@ def insert(arr, obj, values, axis=None): if (index < 0): index += N - values = array(values, copy=False, ndmin=arr.ndim) + # There are some object array corner cases here, but we cannot avoid + # that: + values = array(values, copy=False, ndmin=arr.ndim, dtype=arr.dtype) if indices.ndim == 0: # broadcasting is very different here, since a[:,0,:] = ... behaves # very different from a[:,[0],:] = ...! This changes values so that diff --git a/numpy/lib/tests/test_function_base.py b/numpy/lib/tests/test_function_base.py index ee3000547..624b5f3eb 100644 --- a/numpy/lib/tests/test_function_base.py +++ b/numpy/lib/tests/test_function_base.py @@ -310,6 +310,16 @@ class TestInsert(TestCase): np.insert([0, 1, 2], x, [3, 4, 5]) assert_equal(x, np.array([1, 1, 1])) + def test_structured_array(self): + a = np.array([(1, 'a'), (2, 'b'), (3, 'c')], + dtype=[('foo', 'i'), ('bar', 'a1')]) + val = (4, 'd') + b = np.insert(a, 0, val) + assert_array_equal(b[0], np.array(val, dtype=b.dtype)) + val = [(4, 'd')] * 2 + b = np.insert(a, [0, 2], val) + assert_array_equal(b[[0, 3]], np.array(val, dtype=b.dtype)) + class TestAmax(TestCase): def test_basic(self): @@ -1465,7 +1475,7 @@ class TestMeshgrid(TestCase): # Test that meshgrid complains about invalid arguments # Regression test for issue #4755: # https://github.com/numpy/numpy/issues/4755 - assert_raises(TypeError, meshgrid, + assert_raises(TypeError, meshgrid, [1, 2, 3], [4, 5, 6, 7], indices='ij') |