<p>从二维阵列开始,形状(n,1),如下所示:</p>
<pre><code>In [342]: arr = np.random.rand(5,1)*100
In [343]: arr
Out[343]:
array([[95.39049043],
[19.09502087],
[85.45215423],
[94.77657561],
[32.7869103 ]])
</code></pre>
<p>tolist生成一个列表,但它包含列表;每个[]层表示一个列表。请注意,[]嵌套与数组的:</p>
<pre><code>In [344]: arr.tolist()
Out[344]:
[[95.39049043424225],
[19.095020872584335],
[85.4521542296349],
[94.77657561477125],
[32.786910295446425]]
</code></pre>
<p>要获取编号,必须对每个列表层进行索引:</p>
<pre><code>In [345]: arr.tolist()[0]
Out[345]: [95.39049043424225]
In [346]: arr.tolist()[0][0]
Out[346]: 95.39049043424225
In [347]: arr.tolist()[0][0]*1.05
Out[347]: 100.16001495595437
</code></pre>
<p>如果首先将数组转换为一维数组,则列表索引更简单:</p>
<pre><code>In [348]: arr.ravel()
Out[348]: array([95.39049043, 19.09502087, 85.45215423, 94.77657561, 32.7869103 ])
In [349]: arr.ravel().tolist()
Out[349]:
[95.39049043424225,
19.095020872584335,
85.4521542296349,
94.77657561477125,
32.786910295446425]
In [350]: arr.ravel().tolist()[0]
Out[350]: 95.39049043424225
</code></pre>
<p>但是,如果您的主要目标是将元素相乘,则使用数组更简单:</p>
<pre><code>In [351]: arr * 1.05
Out[351]:
array([[100.16001496],
[ 20.04977192],
[ 89.72476194],
[ 99.5154044 ],
[ 34.42625581]])
</code></pre>
<p>您可以通过以下方式访问阵列的元素:</p>
<pre><code>In [352]: arr[0,0]
Out[352]: 95.39049043424225
</code></pre>
<p>但是如果您确实需要迭代,<code>tolist()</code>选项是很好的选择。在列表上迭代通常比在数组上迭代快。对于数组,您应该尝试使用快速的全数组方法</p>