擅长:python、mysql、java
<p>可以通过以下方法计算数组的维度。Y维度是子列表的数量</p>
<pre><code>>>> data = [[(0, 0.5), (1, 0.6)], [(4, 0.01), (5, 0.005), (6, 0.002)], [(1,0.7)]]
>>> dim_y = len(data)
>>> dim_y
3
</code></pre>
<p>X维是所有元组中最大的<code>[0]</code>索引,加上1</p>
<pre><code>>>> dim_x = max(max(i for i,j in sub) for sub in data) + 1
>>> dim_x
7
</code></pre>
<p>然后用这个大小初始化一个全零数组</p>
<pre><code>>>> import numpy as np
>>> arr = np.zeros((dim_x, dim_y))
>>> arr
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
</code></pre>
<p>现在要填充它,<code>enumerate</code>覆盖子列表以跟踪y索引。然后,对于每个子列表,使用<code>[0]</code>作为x索引,使用<code>[1]</code>作为值本身</p>
<pre><code>for y, sub in enumerate(data):
for x, value in sub:
arr[x,y] = value
</code></pre>
<p>然后,应填充生成的数组(可能希望将其转置为与所需的维度类似)</p>
<pre><code>>>> arr.T
array([[0.5 , 0.6 , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0.01 , 0.005, 0.002],
[0. , 0.7 , 0. , 0. , 0. , 0. , 0. ]])
</code></pre>