Python 如何有效地设置numpy数组2D和1D数组的整列?
我有一个NxM维的numpy数组“a”和N维的M数组“B”。 在a for(i:0,1,….M)中,我计算这个B数组,我想设置数组的整个列“i”。 我试图使用[:,i]访问,但工作速度太慢 如何有效地做到这一点Python 如何有效地设置numpy数组2D和1D数组的整列?,python,arrays,numpy,Python,Arrays,Numpy,我有一个NxM维的numpy数组“a”和N维的M数组“B”。 在a for(i:0,1,….M)中,我计算这个B数组,我想设置数组的整个列“i”。 我试图使用[:,i]访问,但工作速度太慢 如何有效地做到这一点 # Initialize array. A = np.empty([N, M]) for i in range(M): # Compute of B (array N elements): B = ...An operation that results in a 1D
# Initialize array.
A = np.empty([N, M])
for i in range(M):
# Compute of B (array N elements):
B = ...An operation that results in a 1D array, different in each iteration
A[:, i] = B
编辑:B值在“i”迭代中不同。创建
A
为形状(M,N)
。设置A[i]=B
将比A[:,i]=B
快。因为内存在A[i]
中是连续的,而不是在A[:,i]
中。另一个选择是尝试numba.jit
。在某些情况下,它可能会加快很多!所以,B
在迭代过程中保持不变?不,B值在迭代过程中是不同的。这只是一个例子。然后,我认为你已经有了最好的版本,除非我们能够以某种方式优化生成这些B矩阵。创建A
为shape(M,N)
。设置A[i]=B
将比A[:,i]=B
快。因为内存在A[i]
中是连续的,而不是在A[:,i]
中。另一个选择是尝试numba.jit
。在某些情况下,它可能会加快很多!所以,B
在迭代过程中保持不变?不,B值在迭代过程中是不同的。这只是一个例子。然后,我认为你已经有了最好的版本,除非我们能以某种方式优化生成这些B矩阵。