<p>与python的<code>list.append</code>不同,<code>numpy.append</code>不执行适当的操作。因此,您需要将结果分配回变量,如下所示。</p>
<pre><code>import numpy
xyz_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
nums = numpy.array([])
coords = numpy.array([])
for i in range(int(len(xyz_list)/4)):
nums = numpy.append(nums, xyz_list[i*4])
coords = numpy.append(coords, xyz_list[i*4+1:(i+1)*4])
print(nums) # [ 1. 5. 9.]
print(coords) # [ 2. 3. 4. 6. 7. 8. 10. 11. 12.]
</code></pre>
<p>您可以按如下方式重塑<code>coords</code>:</p>
<pre><code>coords = coords.reshape(3, 3)
# array([[ 2., 3., 4.],
# [ 6., 7., 8.],
# [ 10., 11., 12.]])
</code></pre>
<p><strong>有关<code>numpy.append</code>行为的更多详细信息</strong></p>
<p><a href="https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.append.html" rel="nofollow noreferrer">Documentation</a>:</p>
<blockquote>
<p>Returns: A copy of arr with values appended to axis. Note that
append does not occur in-place: a new array is allocated and filled.</p>
</blockquote>
<p>如果您事先知道<code>numpy</code>数组输出的形状,那么通过<code>np.zeros(n)</code>实例化并在稍后用结果填充它是有效的。</p>
<p>另一种选择是:如果您的计算大量使用在数组的左侧插入元素<em>,请考虑使用标准库中的<a href="https://docs.python.org/3/library/collections.html#collections.deque" rel="nofollow noreferrer">^{<cd7>}</a>。</p>