【发布时间】:2021-11-21 12:40:30
【问题描述】:
给定一个二维数组,我想按行排列这个数组。
目前,我将创建一个 for 循环来逐行排列二维数组,如下所示:
for i in range(npart):
pr=np.random.permutation(range(m))
# arr_rand3 is the same as arr, but with each row permuted
arr_rand3[i,:]=arr[i,pr]
但是,我想知道Numpy 中是否有一些设置可以在单行中执行此操作(没有 for 循环)。
完整代码是
import numpy as np
arr=np.array([[0,0,0,0,0],[0,4,1,1,1],[0,1,1,2,2],[0,3,2,2,2]])
npart=len(arr[:,0])
m=len(arr[0,:])
# Permuted version of arr
arr_rand3=np.zeros(shape=np.shape(arr),dtype=np.int)
# Nodal association matrix for C
X=np.zeros(shape=(m,m),dtype=np.double)
# Random nodal association matrix for C_rand3
X_rand3=np.zeros(shape=(m,m),dtype=np.double)
for i in range(npart):
pr=np.random.permutation(range(m))
# arr_rand3 is the same as arr, but with each row permuted
arr_rand3[i,:]=arr[i,pr]
【问题讨论】:
-
你用的是什么 numpy 版本?
-
感谢您对此 OP 感兴趣,我正在使用 numpy==1.19.5
标签: python performance numpy