Abh*_*tia 1 python performance numpy append matrix
我必须存储一个numpy矩阵列表.我尝试了两种方法:
1.创建并附list加到它:
ls_ws=[]
for ind in range(iterations):
...
ls_ws.append(ls_w) # ls_w is a matrix of size 6,1
Run Code Online (Sandbox Code Playgroud)
问题:开始时速度很快,最后速度很慢.
2.创建一个零矩阵并修改它:
for ind in range(iterations):
...
ls_ws=np.matrix(np.zeros((6,iterations)))
Run Code Online (Sandbox Code Playgroud)
问题:我不太确定,但无论每次迭代如何,这似乎都是相同的速度.
我得到的奇怪的事情,如果我将迭代设置为较小的数字,它很快.但是,如果我将它设置为1500这样的大数,则每次迭代(即使是第一次迭代)都非常慢.
第二种方法应该很快,但如果我将迭代设置为大数,则速度非常慢.为什么?怎么解决?
我认为你在这里几乎有一个很好的解决方案,但你对列与行的处理可能会影响性能:
ls_ws=np.matrix(np.zeros((6,iterations)))
for ind in range(iterations):
...
ls_ws[:,ind]=ls_w
Run Code Online (Sandbox Code Playgroud)
您应该在第一个维度而不是最后一个维度内进行迭代.您可以交换尺寸,或者只是这样做:
ls_ws=np.matrix(np.zeros((6,iterations), order='F'))
Run Code Online (Sandbox Code Playgroud)
当数组很大时,这可能会有所帮助,因为您将访问6个元素的连续块,而不是每次迭代中的分散位.