【发布时间】:2019-01-16 18:14:00
【问题描述】:
如何向量化以下代码?
tlngth=20
sp_array = np.zeros((tlngth,tlngth))
sp = np.arange(0,tlngth)
for i in range(tlngth):
sp_array[i] = np.roll(sp,i)
【问题讨论】:
标签: python numpy vectorization
如何向量化以下代码?
tlngth=20
sp_array = np.zeros((tlngth,tlngth))
sp = np.arange(0,tlngth)
for i in range(tlngth):
sp_array[i] = np.roll(sp,i)
【问题讨论】:
标签: python numpy vectorization
您实际上是在尝试构建一个 Toeplitz 矩阵。有一个功能:
import scipy.linalg
tlngth = 5
sp_array = scipy.linalg.toeplitz(np.roll(np.arange(tlngth - 1, -1, -1), 1),
np.arange(tlngth))
#array([[0, 1, 2, 3, 4],
# [4, 0, 1, 2, 3],
# [3, 4, 0, 1, 2],
# [2, 3, 4, 0, 1],
# [1, 2, 3, 4, 0]])
【讨论】: