【发布时间】:2020-01-10 05:13:25
【问题描述】:
我有一个 Row=12584 和 Col 784 的 Xmatrix。我想根据 Row=12584 Col 1 的另一个 Tmatrix 提取每一行,并将值附加到 numpy 数组 X1 或 X2。即使较小的行大小为 1500,也需要 10 分钟以上。我确信有更好、更有效的方法来提取整行并附加到数组
import numpy as np
import time
start_time = time.time()
Row = 12584
#Row = 1500
Col = 784
Xmatrix = np.random.rand(Row,Col)
Tmatrix = np.random.randint(1,3,(Row,1))
X1 = np.array([])
X2 = np.array([])
for i in range(Row):
if Tmatrix[i] == 1:
for y in range(Col):
print ('Current row and col are --', i, y, Xmatrix[i][y])
X1 = np.append(X1, Xmatrix[i][y])
else:
for y in range(Col):
X2 = np.append(X2, Xmatrix[i][y])
print (X1)
print("--- %s seconds ---" % (time.time() - start_time))
【问题讨论】:
-
alist.append(Xmatrix[i,y])应该更快。但无论哪种方式,对行和列的迭代都很慢。即使您在 Row 上进行迭代并进行测试,您也不需要在Col上进行迭代,alist.extend(Xmatrix[i]一次将整行放入列表中。 -
@hpaulj - 您对使用列表进行扩展的建议正在制定中 - 如果您可以将其发布为答案,我可以继续选择它。