Arrays 通过一次删除一项从向量创建numpy数组

Arrays 通过一次删除一项从向量创建numpy数组,arrays,python-2.7,numpy,Arrays,Python 2.7,Numpy,我有一个大小为n的元素列表b。 我想从这个列表中创建一个大小为n-1,n的2D numpy数组,这样第I行就是不带第I项的b元素 例如,如果 b = [1,2,3,4] numpy阵列将是 A = np.array( [[2,3,4], [1,3,4], [1,2,4], [1,2,3]]) 方法1:一种带掩蔽的方法- 方法2:专注于性能和内存效率,另一种是- n = len(b) b2D = np.b

我有一个大小为n的元素列表b。 我想从这个列表中创建一个大小为n-1,n的2D numpy数组,这样第I行就是不带第I项的b元素

例如,如果

b = [1,2,3,4]
numpy阵列将是

A = np.array( [[2,3,4],
               [1,3,4],
               [1,2,4],
               [1,2,3]])
方法1:一种带掩蔽的方法-

方法2:专注于性能和内存效率,另一种是-

n = len(b)
b2D = np.broadcast_to(b, (n,n)) # or np.repeat(b[None],n,axis=0)
out = b2D[~np.eye(n, dtype=bool)].reshape(n,-1)
strided = np.lib.stride_tricks.as_strided
n = len(b)
b_ext = np.r_[b[1:],b[:-1]]
s = b_ext.strides[0]
out = strided(b_ext, shape=(n-1,n), strides=(s,s)).reshape(n,-1)