<p dir="auto">It is relatively intuitive to want to create a structured array with "str" string for a dtype, which is converted to a "S0" type. I think this should be detected as an error instead ?</p>
<p dir="auto">Example:</p>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; dt = np.dtype([('f', float), ('s', str)])
&gt;&gt;&gt; np.array([(1.0, &quot;hello world&quot;)], dt)
array([(1.0, '')], 
      dtype=[('f', '&lt;f8'), ('s', 'S')])"><pre class="notranslate"><span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</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">'f'</span>, <span class="pl-s1">float</span>), (<span class="pl-s">'s'</span>, <span class="pl-s1">str</span>)])
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">np</span>.<span class="pl-en">array</span>([(<span class="pl-c1">1.0</span>, <span class="pl-s">"hello world"</span>)], <span class="pl-s1">dt</span>)
<span class="pl-en">array</span>([(<span class="pl-c1">1.0</span>, <span class="pl-s">''</span>)], 
      <span class="pl-s1">dtype</span><span class="pl-c1">=</span>[(<span class="pl-s">'f'</span>, <span class="pl-s">'&lt;f8'</span>), (<span class="pl-s">'s'</span>, <span class="pl-s">'S'</span>)])</pre></div>
<p dir="auto">Proposal: This should either resize or raise a ValueError (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="223359260" data-permission-text="Title is private" data-url="https://github.com/numpy/numpy/issues/8970" data-hovercard-type="pull_request" data-hovercard-url="/numpy/numpy/pull/8970/hovercard" href="https://github.com/numpy/numpy/pull/8970">#8970</a>), as it seems like it would always mask bugs</p>