【问题标题】:Wrapping a 2D numpy array包装一个 2D numpy 数组
【发布时间】:2021-12-24 09:00:01
【问题描述】:

假设我有以下 numpy 二维数组,其中arr[2,0] = 7

arr =
[[1 2 3]
 [4 5 6]
 [7 8 9]]

如何实现环绕效果,例如,当我尝试检索 arr[3,0] 时,我不会得到 "index 3 is out of the bounds for axis 0尺寸为 3 英寸,但会得到arr[0,0] = 1 作为回报?

谢谢!

【问题讨论】:

    标签: python numpy numpy-ndarray


    【解决方案1】:

    您可以使用 take 一次索引一个维度:

    In [72]: np.take(arr,3,0, mode='wrap')
    Out[72]: array([1, 2, 3])
    

    【讨论】:

    • 坏主意。 numpy.take 无法返回视图。它需要将所有选定的数据复制到一个新的缓冲区中,这对于大型数组来说非常昂贵。
    • @user2357112supportsMonica、takeput 是仅有的具有 wrap 选项的 buitin 函数(据我所知)。当然,OP 可以在执行常规索引之前进行自己的索引包装。
    • @user2357112supportsMonica, np.take 与等效的高级索引(例如为arr.take([3,7,10],0,'wrap')。对于标量索引,您自己的包装更快。
    猜你喜欢
    • 2022-07-08
    • 2020-11-05
    • 1970-01-01
    • 2021-08-15
    • 2011-06-19
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多