Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从itertools.chain对象获取数组_Python_Itertools - Fatal编程技术网

Python 从itertools.chain对象获取数组

Python 从itertools.chain对象获取数组,python,itertools,Python,Itertools,假设我有list\u of_numbers=[[1,2],[3],][/code>,我想要更简单的对象list objectx=[1,2,3] 按照这个逻辑,我是这样做的 不幸的是,chain并不是我想要的,因为(例如)在控制台上运行chain会返回 什么是函数f,如果我执行x=f(链),然后在控制台键入x,我会得到[1,2,3] 更新:实际上,我最终需要的结果是数组([1,2,3])。我正在对所选答案添加一行注释以解决此问题。您可以使用列表(链)列表。如果你做了list(chain)。但是,仅

假设我有
list\u of_numbers=[[1,2],[3],][/code>,我想要更简单的对象list object
x=[1,2,3]

按照这个逻辑,我是这样做的

不幸的是,
chain
并不是我想要的,因为(例如)在控制台上运行
chain
会返回

什么是函数
f
,如果我执行
x=f(链)
,然后在控制台键入
x
,我会得到
[1,2,3]


更新:实际上,我最终需要的结果是
数组([1,2,3])
。我正在对所选答案添加一行注释以解决此问题。

您可以使用
列表(链)

列表
。如果你做了
list(chain)
。但是,仅出于调试目的使用它,通常效率可能会很低。

如果您的最终目标是获得一个Numpy阵列,那么您应该在此处使用:


这并不能回答这个问题。若要评论或要求作者澄清,请在他们的帖子下方留下评论。它不会回答“函数f是什么,如果我执行x=f(链),然后在控制台键入x,我会得到[1,2,3]?”或标题语句“从itertools.chain对象返回一个“普通旧”数组”为什么是-1?如果有任何改进这个问题的想法,我们将不胜感激。这是怎么回事?既然将numpy作为np导入,我现在使用的单行版本是:
x=np.array(list(itertools.chain(*list_of_number))
。看起来很有希望,尽管我似乎无法让
%timeit
部分正常工作。某种语法错误。我尝试先导入
timeit
,但没有任何帮助。一般来说,我不了解你的速度比较。你是说
numpy.fromiter
是更快的选项吗?如果是,这是pr的主要原因吗是否出错?
%timeit
是其中的一部分。当然,速度是首选
.fromiter
的原因之一,而且我们不必在此处创建中间列表。
list_of_numbers = [[1, 2], [3], []]
import itertools
chain = itertools.chain(*list_of_numbers)
>>> import numpy as np
>>> from itertools import chain
>>> list_of_numbers = [[1, 2], [3], []]
>>> np.fromiter(chain(*list_of_numbers), dtype=int)
array([1, 2, 3])
>>> list_of_numbers = [[1, 2]*1000, [3]*1000, []]*1000
>>> %timeit np.fromiter(chain(*list_of_numbers), dtype=int)
10 loops, best of 3: 103 ms per loop
>>> %timeit np.array(list(chain(*list_of_numbers)))
1 loops, best of 3: 199 ms per loop