<p dir="auto">UnicodeDecodeError occurred when accessing an item assigned from another numpy array item. I dont know if this is made by design</p>
<h3 dir="auto">Reproducing code example:</h3>

<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; import numpy as np
&gt;&gt;&gt; strA = np.array([('aa', 2),('bb', 4)], dtype=[('c1', 'U2'), ('c2', 'i4')])
&gt;&gt;&gt; strA['c1'][0]
'aa'
&gt;&gt;&gt; strA['c1'] = strA['c1'][0]
&gt;&gt;&gt; strA['c1'][0]
UnicodeDecodeError: 'utf-32-le' codec can't decode bytes in position 0-3: code point not in range(0x110000)"><pre class="notranslate"><span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-k">import</span> <span class="pl-s1">numpy</span> <span class="pl-k">as</span> <span class="pl-s1">np</span>
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">strA</span> <span class="pl-c1">=</span> <span class="pl-s1">np</span>.<span class="pl-en">array</span>([(<span class="pl-s">'aa'</span>, <span class="pl-c1">2</span>),(<span class="pl-s">'bb'</span>, <span class="pl-c1">4</span>)], <span class="pl-s1">dtype</span><span class="pl-c1">=</span>[(<span class="pl-s">'c1'</span>, <span class="pl-s">'U2'</span>), (<span class="pl-s">'c2'</span>, <span class="pl-s">'i4'</span>)])
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">strA</span>[<span class="pl-s">'c1'</span>][<span class="pl-c1">0</span>]
<span class="pl-s">'aa'</span>
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">strA</span>[<span class="pl-s">'c1'</span>] <span class="pl-c1">=</span> <span class="pl-s1">strA</span>[<span class="pl-s">'c1'</span>][<span class="pl-c1">0</span>]
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">strA</span>[<span class="pl-s">'c1'</span>][<span class="pl-c1">0</span>]
<span class="pl-v">UnicodeDecodeError</span>: <span class="pl-s">'utf-32-le'</span> <span class="pl-s1">codec</span> <span class="pl-s1">can</span>'<span class="pl-s1">t</span> <span class="pl-s1">decode</span> <span class="pl-s1">bytes</span> <span class="pl-c1">in</span> <span class="pl-s1">position</span> <span class="pl-c1">0</span><span class="pl-c1">-</span><span class="pl-c1">3</span>: <span class="pl-s1">code</span> <span class="pl-s1">point</span> <span class="pl-c1">not</span> <span class="pl-c1">in</span> <span class="pl-en">range</span>(<span class="pl-c1">0x110000</span>)</pre></div>

<h3 dir="auto">Error message:</h3>
<p dir="auto">UnicodeDecodeError: 'utf-32-le' codec can't decode bytes in position 0-3: code point not in range(0x110000)</p>


<h3 dir="auto">Numpy/Python version information:</h3>

<p dir="auto">python 3.6.5<br>
numpy 1.14.3 and 1.15.4</p>
<h3 dir="auto">Describe the issue:</h3>
<p dir="auto">When I call <code class="notranslate">np.find_common_type</code> with multiple identical <code class="notranslate">datetime64</code> types, I would expect to get the same type back, since all the inputs are identical. Instead, I always get <code class="notranslate">dtype('O')</code>.</p>
<h3 dir="auto">Reproduce the code example:</h3>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="import numpy as np
dt = np.dtype('datetime64[ns]')
dt1 = np.find_common_type([dt], []) 
# this works; both dtype('&lt;M8')
assert dt1 == dt
dt2 = np.find_common_type([dt, dt], [])
# this fails; dt2 is dtype('O')
assert dt2 == dt"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-s1">numpy</span> <span class="pl-k">as</span> <span class="pl-s1">np</span>
<span class="pl-s1">dt</span> <span class="pl-c1">=</span> <span class="pl-s1">np</span>.<span class="pl-en">dtype</span>(<span class="pl-s">'datetime64[ns]'</span>)
<span class="pl-s1">dt1</span> <span class="pl-c1">=</span> <span class="pl-s1">np</span>.<span class="pl-en">find_common_type</span>([<span class="pl-s1">dt</span>], []) 
<span class="pl-c"># this works; both dtype('&lt;M8')</span>
<span class="pl-k">assert</span> <span class="pl-s1">dt1</span> <span class="pl-c1">==</span> <span class="pl-s1">dt</span>
<span class="pl-s1">dt2</span> <span class="pl-c1">=</span> <span class="pl-s1">np</span>.<span class="pl-en">find_common_type</span>([<span class="pl-s1">dt</span>, <span class="pl-s1">dt</span>], [])
<span class="pl-c"># this fails; dt2 is dtype('O')</span>
<span class="pl-k">assert</span> <span class="pl-s1">dt2</span> <span class="pl-c1">==</span> <span class="pl-s1">dt</span></pre></div>
<h3 dir="auto">Error message:</h3>
<p dir="auto"><em>No response</em></p>
<h3 dir="auto">NumPy/Python version information:</h3>
<p dir="auto">1.21.2 3.9.9 | packaged by conda-forge | (main, Dec 20 2021, 02:41:37)<br>
[Clang 11.1.0 ]</p>