高效地将 Python 变长列表转换为密集 NumPy 数组
将变长 Python 列表直接转换为 NumPy 数组结果在“对象”类型的数组中,这可能是不可取的。或者,尝试使用 np.array(v, dtype=np.int32) 强制指定类型会因数组中存在序列而导致异常。
因此,要创建一个密集的 NumPy 数组特定数据类型(例如 int32),同时使用占位符填充缺失值,您可以利用 itertools.zip_longest
例如,考虑输入序列 v = [[1], [1, 2]],使用占位符为 0 的 itertools.zip_longest ,可以高效地获得密集的 NumPy 数组,如下所示:
<code class="python">import itertools np.array(list(itertools.zip_longest(*v, fillvalue=0))).T</code>
这将产生所需的输出:
array([[1, 0], [1, 2]])
请注意,对于 Python 2,使用 itertools.izip_longest 代替。
以上是如何将可变长度 Python 列表转换为带有占位符的密集 NumPy 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!