numpy通过索引获取数组中的值
我有一个包含数组的数组的数组:
arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2 = np.array([[10,20,30],[40,50,60],[70,80,90]])
arr3 = np.array([[15,25,35],[45,55,65],[75,85,95]])
list_arr = np.array([arr1,arr2,arr3])
还有一个索引数组:
indices_array = np.array([1,0,2])
我想要获取第一个(数组的数组)中索引为 1
的数组,第二个(数组的数组)中索引为 0
的数组,以及第三个(数组的数组)中索引为 2
的数组。
期望的输出是:
#[[ 4 5 6]
#[10 20 30]
#[75 85 95]]
我想用 numpy 的方法来实现这个,因为我的数组很大,所以我更倾向于不使用列表推导式。
相关文章:
- 暂无相关问题
2 个回答
0
只需要通过将位置链接到想要的索引(0-1, 1-0, 2-2)来访问,具体方法如下:
desired_array = np.array([list_arrr[x][y] for x,y in enumerate([1,0,2])])
3
基本上,你是在选择第二个轴上的元素,这些元素的索引是通过indices_array
来对应第一个轴上每个位置的,同时适用于第三个轴上的所有元素。因此,你可以这样做 -
list_arr[np.arange(list_arr.shape[0]),indices_array,:]
示例运行 -
In [16]: list_arr
Out[16]:
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[10, 20, 30],
[40, 50, 60],
[70, 80, 90]],
[[15, 25, 35],
[45, 55, 65],
[75, 85, 95]]])
In [17]: indices_array
Out[17]: array([1, 0, 2])
In [18]: list_arr[np.arange(list_arr.shape[0]),indices_array,:]
Out[18]:
array([[ 4, 5, 6],
[10, 20, 30],
[75, 85, 95]])