我希望将相同lentgh(500)的100k向量堆叠到python中的单个矩阵中,但这需要花费太多时间。
这是我的代码:
stacked = all_vectors[0]
for i in range(1,100000):
stacked = np.column_stack((stacked ,all_vectors[i]))
你知道怎么做得更快吗?
答案 0 :(得分:2)
你应该得到你想要的答案
stacked = np.column_stack(all_vectors[:100000])
这与
之间似乎没有区别stacked = np.array(all_vectors[:100000]).transpose()
从这个互动环节可以看到:
>>> stacked = np.column_stack(all_vectors[:100000])
>>> sstacked = np.array(all_vectors[:100000]).transpose()
>>> stacked == sstacked
array([[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True],
...,
[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True]], dtype=bool)
>>> (stacked == sstacked).all()
True
编辑:时间结果似乎更喜欢第二种方法:
%%timeit
vector = list(range(1, 1+10))
all_vectors = [vector] *100_000
result = np.column_stack(all_vectors)
396 ms ± 18.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%%timeit
vector = list(range(1, 1+10))
all_vectors = [vector] *100_000
result = np.array(all_vectors)
np.array(all_vectors[:100000]).transpose()
152 ms ± 3.16 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)