我必须存储一个 numpy 矩阵列表。我尝试了两种方法:
1.创建一个列表并 append 到它:
ls_ws=[]
for ind in range(iterations):
...
ls_ws.append(ls_w) # ls_w is a matrix of size 6,1
问题:开始时很快,结束时变得很慢。
2.创建一个零矩阵并修改它:
for ind in range(iterations):
...
ls_ws=np.matrix(np.zeros((6,iterations)))
问题:我不是很确定,但这似乎与每次迭代无关,速度相同。
我得到的奇怪的东西,如果我将迭代设置为小数它很快。但是如果我将它设置为像 1500 这样的大数字,那么每次迭代都会非常慢(甚至是第一次迭代)。
第二种方法应该很快,但如果我将迭代次数设置为很大,速度会很慢。为什么?如何解决?
请您参考如下方法:
我认为这里您几乎可以找到一个很好的解决方案,但是您对列与行的处理可能会影响性能:
ls_ws=np.matrix(np.zeros((6,iterations)))
for ind in range(iterations):
...
ls_ws[:,ind]=ls_w
您应该在第一个维度而不是最后一个维度中迭代。您可以交换尺寸,或者只是这样做:
ls_ws=np.matrix(np.zeros((6,iterations), order='F'))
当数组很大时,这可能会有所帮助,因为您将访问 6 个元素的连续 block ,而不是每次迭代中的分散位。
