快速命令访问带有所需索引的列表中的多维数组元素

2024-09-28 23:48:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有人知道从给定索引列表中获取2D数组元素的快速方法

下面的代码实现了我想要的功能,但是我想知道在下面的代码中是否有更快的方法来完成循环中的操作?我要寻找的是类似于array[wantedindex]的命令,而不是下面代码中的循环

import numpy as np
np.random.seed(1)
x = np.arange(0, 1+.1, .25)
y = np.arange(0, 1+.1, .25)
x, y = np.meshgrid(x,y)
print('\n x \n', x,)

index = [(np.random.randint(0, high=len(x)), np.random.randint(0, high=len(x))) for i in range(len(x))]
print('\n index \n', index)

for indexNumber in range(len(index)):
    print('\n index[%d]:' %indexNumber, index[indexNumber], '\n x[index[%d]] \n' %indexNumber, x[index[indexNumber]])

上面的代码生成以下输出:

x 
 [[0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]]

 index 
 [(3, 4), (0, 1), (3, 0), (0, 1), (4, 4)]

 index[0]: (3, 4) 
 x[index[0]] 
 1.0

 index[1]: (0, 1) 
 x[index[1]] 
 0.25

 index[2]: (3, 0) 
 x[index[2]] 
 0.0

 index[3]: (0, 1) 
 x[index[3]] 
 0.25

 index[4]: (4, 4) 
 x[index[4]] 
 1.0

Tags: 方法代码in列表forindexlennp