小编ste*_*_B.的帖子

将 itertools 数组转换为 numpy 数组

我正在创建这个数组:

A=itertools.combinations(range(6),2)
Run Code Online (Sandbox Code Playgroud)

我必须用 numpy 操作这个数组,比如:

A.reshape(..
Run Code Online (Sandbox Code Playgroud)

如果维度是 A 高,则命令list(A)太慢。

如何将 itertools 数组“转换”为 numpy 数组?

更新1:我已经尝试过hpaulj的解决方案,在这种特定情况下会慢一点,知道吗?

start=time.clock()

A=it.combinations(range(495),3)
A=np.array(list(A))
print A

stop=time.clock()
print stop-start
start=time.clock()

A=np.fromiter(it.chain(*it.combinations(range(495),3)),dtype=int).reshape (-1,3)
print A

stop=time.clock()
print stop-start
Run Code Online (Sandbox Code Playgroud)

结果:

[[  0   1   2]
 [  0   1   3]
 [  0   1   4]
 ..., 
 [491 492 494]
 [491 493 494]
 [492 493 494]]
10.323822
[[  0   1   2]
 [  0   1   3]
 [  0   1   4]
 ..., 
 [491 492 494]
 [491 493 494]
 [492 493 494]]
12.289898
Run Code Online (Sandbox Code Playgroud)

python numpy python-itertools

7
推荐指数
1
解决办法
6092
查看次数

标签 统计

numpy ×1

python ×1

python-itertools ×1