当前位置: 首页 > 面试题库 >

沿动态指定的轴切片numpy数组

景明诚
2023-03-14
问题内容

我想沿着特定的轴动态切片一个numpy数组。鉴于这种:

axis = 2
start = 5
end = 10

我想要达到相同的结果:

# m is some matrix
m[:,:,5:10]

使用这样的东西:

slc = tuple(:,) * len(m.shape)
slc[axis] = slice(start,end)
m[slc]

但是:值不能放在元组中,所以我不知道如何构建切片。


问题答案:

我认为一种方法是使用slice(None)

>>> m = np.arange(2*3*5).reshape((2,3,5))
>>> axis, start, end = 2, 1, 3
>>> target = m[:, :, 1:3]
>>> target
array([[[ 1,  2],
        [ 6,  7],
        [11, 12]],

       [[16, 17],
        [21, 22],
        [26, 27]]])
>>> slc = [slice(None)] * len(m.shape)
>>> slc[axis] = slice(start, end)
>>> np.allclose(m[slc], target)
True

我有一种模糊的感觉,我以前曾经为此使用过一个函数,但是现在似乎找不到了。



 类似资料:
  • 问题内容: 我有一个像这样的数组: 从仅具有“ a”的前两列的数组中切出1x2数组的最有效方法是什么? 即 问题答案: 二维numpy数组使用(not )索引,但是您可以对numpy数组和矩阵使用与在python中的普通矩阵相同的切片表示法(只需将它们放在单个):

  • 问题内容: 该问题基于以下较早的问题: 给定一个数组: 并给出其索引: 如何将它们整齐地堆叠在一起以形成新的2D​​阵列?这就是我想要的: )Divakar的这种解决方案是我目前用于2D阵列的解决方案: 现在,如果要传递3D数组,则需要修改此函数: 但是此功能现在仅适用于3D阵列-我无法将2D阵列传递给它。 我是否可以通过某种方式将其推广到任何维度?这是我的尝试: 我在这条线上遇到麻烦: 我该如何

  • Python 的内置容器对象,例如列表,可以通过索引或切片来访问和修改。这在 ndarray 对象中也一样,ndarray 对象中的元素遵循基于零的索引,常用的索引方式:元素访问、切片索引、布尔型索引。 1. 元素访问 1.1 单一元素访问 一维数组的元素访问非常简单,和 Python 列表规则基本差不多。对单一元素的访问,索引遵循从 0 开始,依次递增 1。 案例 例如,对于创建的一维数组,我们

  • 问题内容: 我有一个二维NumPy数组。我知道如何获取轴上的最大值: 如何获得最大元素的索引?我想代替输出。 问题答案:

  • 问题内容: 我有以下代码: 但是我想将一个指向字节切片的指针传递给另一个函数,并在那里切片,所以类似: 它给我一个错误,我不能在函数参数中使用type 作为类型,并且不能对type进行切片。怎么了?默认情况下切片不是通过引用传递的吗?我试图在没有指针的情况下执行此操作,但是它不起作用- 正在复制数组。我怎样才能做到这一点? 问题答案: 该错误来自您尚未发布的拼写错误(您尝试传递一个切片而不是指向的

  • 我正在为我的游戏设计一个区块旋转组件,我遇到了一个我无法理解的小问题。基本上,我希望能够沿所有三个轴旋转网格组件。玩家一次只能旋转一个轴,旋转90度或-90度。我还希望玩家始终根据世界的X、Y和Z轴旋转网格,而不是块的相对轴,它将随着旋转而改变。我如何做到这一点? 无旋转的网格: 网格沿X轴逆时针旋转90度: 这里的问题是,如果我想沿着Y轴旋转块,相反,它将沿着Z轴旋转块,因为块现在被旋转。我如何