gpt4 book ai didi

python - 沿特定轴由其他二维索引的 Numpy 二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:14 24 4
gpt4 key购买 nike

我有一个二维数组:

>>> in_arr = np.array([[1,2],[4,3]])
array([[1, 2],
[4, 3]])

然后我找到按列排序的索引以生成另一个二维数组:

>>> col_sort = np.argsort(in_arr, axis=1)
array([[0, 1],
[1, 0]])

我想知道用第二个索引第一个的高效 numpy 切片:

>>> redordered_in_arr = np.*SOME_SLICE_METHOD*(in_arr, col_sort, axis=1)
array([[1, 2],
[3, 4]])

目的是然后按列对数组执行(更复杂的)函数,例如:

>>> arr_with_function = reordered_in_arr ** np.array([1,2])
array([[1, 4],
[3, 16]])

并将元素返回到它们在数组中的原始位置

>>> return_order = np.argsort(col_sort, axis=1)
>>> redordered_in_arr = np.*SOME_SLICE_METHOD*(arr_with_function, return_order, axis=1)
array([[1, 4],
[16, 3]])

好吧,在我打字的时候考虑一​​下,我可能只使用 apply_over_axis,但我仍然想知道如何有效地执行上述操作,以防它以后有值(value)..

最佳答案

如果您想就地完成所有这些操作,则不需要 argsort()。 Numpy 在这种情况下支持就地操作:

In [12]: in_arr = np.array([[1,2],[4,3]])

In [13]: in_arr.sort(axis=1)

In [14]: in_arr **= [1, 2]

In [15]: in_arr
Out[15]:
array([[ 1, 4],
[ 3, 16]])

但是如果您需要已排序项目的索引,您可以通过简单的索引获得预期的结果。

In [18]: in_arr[np.arange(2)[:,None], col_sort]
Out[18]:
array([[1, 2],
[3, 4]])

关于python - 沿特定轴由其他二维索引的 Numpy 二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50129198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com