将低维numpy数组的部分提取到高维数组的最终轴中

达索斯·帕奇(DathosPachy)

我有一个静态形状(l,l)数组C我想将它的一部分提取到其他K具有形状的数组中(m,m,n,n)我要从C提取的内容的起始索引在数组中给出i0,该数组具有形状(m,m)

的某些元素K将由给出K[i,j,:,:] = C[i0[i,j]:i0[i,j]+n, i0[i,j]:i0[i,j]+n]因此,提出其他一些类似的问题似乎可以解决此问题。

C[i0[None, None, ...] + np.arange(n)[..., None, None], 
  i0[None, None, ...] + np.arange(n)[..., None, None], I, J]

这引发了一个IndexError我猜这是因为C只有2D,并且尺寸无法增加。尽管可以通过平铺来轻松解决C,但由于C它很大,因此重新制作m*m时间会非常昂贵

所以我的问题是如何将2D数组的不同(2D)部分提取到4D数组的相应部分中。

迪卡卡(Divakar)

一种方法是np.meshgrid创建2D(n,n)形状窗口相对应的索引网格,并添加i0带有两个新轴扩展的索引网格沿这些轴进行广播。最后,我们只需将其编入索引C即可得到所需的4D输出。因此,一种实现方式将是这样的-

N = np.arange(n)
X,Y = np.meshgrid(N,N)
out = C[i0[...,None,None] + Y,i0[...,None,None] + X]

样品运行-

In [153]: C
Out[153]: 
array([[3, 5, 1, 6, 3, 5, 8, 7, 0, 2],
       [8, 4, 6, 8, 7, 2, 6, 2, 5, 0],
       [3, 7, 7, 7, 3, 4, 4, 6, 7, 6],
       [7, 0, 8, 2, 1, 1, 0, 4, 4, 6],
       [2, 4, 6, 0, 0, 5, 6, 8, 0, 0],
       [4, 6, 1, 0, 5, 6, 2, 1, 7, 4],
       [0, 5, 5, 3, 7, 5, 7, 1, 4, 0],
       [6, 4, 4, 7, 2, 4, 6, 6, 6, 5],
       [5, 2, 3, 2, 2, 5, 4, 5, 2, 5],
       [3, 7, 1, 0, 4, 4, 6, 6, 2, 2]])

In [154]: i0
Out[154]: 
array([[1, 0, 4, 4],
       [0, 4, 4, 0],
       [2, 3, 1, 3],
       [2, 2, 0, 4]])

In [155]: n = 3

In [157]: out[0,0,:,:]
Out[157]: 
array([[4, 6, 8],
       [7, 7, 7],
       [0, 8, 2]])

In [158]: C[i0[0,0]:i0[0,0]+n,i0[0,0]:i0[0,0]+n]
Out[158]: 
array([[4, 6, 8],
       [7, 7, 7],
       [0, 8, 2]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从R中的高维数组创建低维矩阵?

来自分类Dev

在低维数组中拆分数组的最后一维

来自分类Dev

将一维Numpy数组与一维numpy数组连接

来自分类Dev

尝试将部分csv提取到numpy数组

来自分类Dev

将二维numpy数组放入3维数组

来自分类Dev

PHP-将XML数据提取到二维数组

来自分类Dev

如何从numpy二维数组中提取子数组?

来自分类Dev

将字符串读取到C中的二维字符串数组中

来自分类Dev

Numpy:将一维数组(行)添加到 Numpy Python 中的空二维数组

来自分类Dev

沿任意轴串联未知维的numpy数组

来自分类Dev

二维numpy数组中的阈值

来自分类Dev

一维数组在numpy中的乘法

来自分类Dev

在C ++中从.txt文件读取到二维数组

来自分类Dev

如何将Python中的3维数组乘以3维中的1维数组

来自分类Dev

如何有效地将2维数组中的每个元素乘以Numpy中的1维数组?

来自分类Dev

如何从3维数组中查找低元素

来自分类Dev

将数据存储在一维数组中

来自分类Dev

将3维Numpy数组转换为4维Numpy数组

来自分类Dev

将游标提取到数组中

来自分类Dev

从foreach将数据提取到数组中

来自分类Dev

在Python中,如何将数值数组列表转换为简单的一维numpy数组?

来自分类Dev

根据Python中的变量将n维numpy数组转换为2D数组

来自分类Dev

在Python中,如何将数值数组列表转换为简单的一维numpy数组?

来自分类Dev

从4维Numpy数组中获取图像作为4维Numpy数组

来自分类Dev

交换numpy数组的维数

来自分类Dev

丢失numpy数组的维数

来自分类Dev

丢失numpy数组的维数

来自分类Dev

将numpy矩阵转换为一维numpy数组

来自分类Dev

将numpy矩阵转换为一维numpy数组

Related 相关文章

热门标签

归档