假设我按照以下方式初始化一个矩阵:
import scipy
m = scipy.zeros((10, 10))
现在我需要做一些计算,并将结果赋值给m
。在这个赋值过程中,m
的大小不会改变,因此我认为如果能够直接在原地完成赋值,速度会更快。
m = scipy.array([[i * j for j in range(10)] for i in range(10)])
我担心在上面的代码中,会创建一个临时矩阵来保存结果,然后将m
赋值为这个值。这是低效的,因为它涉及到分配一个新的矩阵。更有效的解决方案是直接将值存储在m
中,可以这样表达:
for i in range(10):
for j in range(10):
m[i,j] = i * j
但是假设生成器表达式对我的代码编写方式更加方便,我想知道的是:在上述生成器表达式中,我是否进行了额外的矩阵分配?