<div dir="ltr"><div><div><div><div>Consider the following:<br><br>a = np.array([(1, 'a'), (2, 'b'), (3, 'c')], dtype=[('foo', 'i'), ('bar', 'a1')])<br></div>b = np.append(a, (4, 'd'))<br>

Traceback (most recent call last):<br>  File "<stdin>", line 1, in <module><br>  File "/home/ben/miniconda/lib/python2.7/site-packages/numpy/lib/function_base.py", line 3555, in append<br>
    return concatenate((arr, values), axis=axis)<br>
TypeError: invalid type promotion<br>b = np.insert(a, 4, (4, 'd'))<br>Traceback (most recent call last):<br>  File "<stdin>", line 1, in <module><br>  File "/home/ben/miniconda/lib/python2.7/site-packages/numpy/lib/function_base.py", line 3464, in insert<br>

    new[slobj] = values<br>ValueError: could not convert string to float: d<br><br></div>In my original code snippet I was developing which has a more involved dtype, I actually got a different exception:<br>b = np.append(a, c)<br>

Traceback (most recent call last):<br>  File "<stdin>", line 1, in <module><br>  File "/home/ben/miniconda/lib/python2.7/site-packages/numpy/lib/function_base.py", line 3553, in append<br>
    values = ravel(values)<br>
  File "/home/ben/miniconda/lib/python2.7/site-packages/numpy/core/fromnumeric.py", line 1367, in ravel<br>    return asarray(a).ravel(order)<br>  File "/home/ben/miniconda/lib/python2.7/site-packages/numpy/core/numeric.py", line 460, in asarray<br>

    return array(a, dtype, copy=False, order=order)<br>ValueError: setting an array element with a sequence.<br><br></div><div>Luckily, this works as a work-around:<br>>>> b = np.append(a, np.array([(4, 'd')], dtype=a.dtype))<br>

>>> b<br>array([(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')], <br>      dtype=[('foo', 'i'), ('bar', 'S1')])<br></div><div><br></div>The same happens whether I enclose the value with square bracket or not. I suspect that this array type just wasn't considered when its checking logic was developed. This is with 1.8.2 from miniconda. Should we consider this a bug or are structured arrays just not expected to be modified like this?<br>

<br></div><div>Cheers!<br></div><div>Ben Root<br></div></div>