我有一个二维矩阵。为了这个例子的目的,假设它是一个随机矩阵
>>> a = np.random.randn(5, 7)
>>> a
array([[-0.37279322, 0.28619523, -0.05309901, 0.26010327, 0.1846693 , 0.33112176, 0.75814911],
[ 1.57001151, -0.86831693, -0.20576395, 1.46450855, -0.01631132, 3.02790403, -0.65313017],
[ 0.2362675 , -1.52190536, 0.04687194, 2.01618876, 0.03780218, -0.53041096, -0.30104844],
[-0.5504834 , 1.04286156, 1.12863785, 0.89583492, 0.28607363, 1.42858007, 0.28582572],
[-0.768464 , 0.31952554, 0.81129581, 0.26239668, -0.23242878, -1.01584339, 0.39573906]])
和两个标签向量:
label_y = np.array([23, 984, 123, 9321, 121238])
label_x = np.array([121, 31312, 9123131, 1111, 1231441, 1929313, 192312312361])
我想展平 a 的元素并输出它们的标签索引和值。例如:
23,121,-0.37279322
23,31312,0.28619523
23,9123131,-0.05309901
23,1111,0.26010327
23,1231441,0.1846693
23,1929313,0.33112176
23,192312312361,0.75814911
984,121,...
...
有没有在 numpy 中不用 for 循环的简单方法?
最佳答案
使用np.meshgrid
创建对应于 X
和 Y
标签的 2D
网格,然后将它们作为列与 2D
输入数组一起堆叠 a
,像这样-
X,Y = np.meshgrid(label_x,label_y)
out = np.column_stack((Y.ravel(),X.ravel(),a.ravel()))
关于python - 在没有双循环的情况下展平 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38073791/