使用numpy使用2D数组的值更改3D数组中的子数组

卡洛斯·爱德华多·科珀斯

我正在编写代码,一个问题突然浮现在脑海。因此,基本上我有一个带有形状的3D numpy数组
(2, 5, 5)和一个带有形状的2D numpy数组(2, 4)(这只是一个例子,数组可能更大)。我需要用[:, 2:, 2:]2D数组中的值替换3D数组(slice 的子数组中的值1。我考虑过要从要在3D数组中更改的值获取索引,然后在2D数组中使用for循环遍历这些值,但是我不确定这是否有效,而且我我得到一个错误。

import numpy as np

arr = np.array([[[0.,  1., 43., 25., 21.],
                 [0.,  0.,  0.,  0.,  0.],
                 [0., 43.,  0.,  1.,  0.], 
                 [0., 43.,  1.,  0.,  1.],
                 [0., 45.,  0.,  1.,  0.]],

                [[0.,  1., 38., 29., 46.],
                 [0.,  0.,  0.,  0.,  0.],
                 [0., 32.,  0.,  0.,  1.],
                 [0., 26.,  0.,  0.,  1.],
                 [0., 30.,  1.,  1.,  0.]]])

values = [[2, 3, 1, 4],
          [4, 1, 5, 9]]

indexes = np.argwhere(newarr[:, 2:, 2:] == 1) + [0, 2, 2]

# indexes = [[0 2 3]
#            [0 3 2]
#            [0 3 4]
#            [0 4 3]
#            [1 2 4]
#            [1 3 4]
#            [1 4 2]
#            [1 4 3]]

for i in values:
    arr[indexes] == i

#Error
#index 2 is out of bounds for axis 0 with size 2

我想要的输出应该是

newarr = [[[0.,  1., 43., 25., 21.],
           [0.,  0.,  0.,  0.,  0.],
           [0., 43.,  0.,  2.,  0.], 
           [0., 43.,  3.,  0.,  1.],
           [0., 45.,  0.,  4.,  0.]],

          [[0.,  1., 38., 29., 46.],            
           [0.,  0.,  0.,  0.,  0.],
           [0., 32.,  0.,  0.,  4.],
           [0., 26.,  0.,  0.,  1.],
           [0., 30.,  5.,  9.,  0.]]])

我认为仅使用numpy应该会有更高的效率,但是我看不到该怎么做,因此我们将不胜感激,谢谢!

亚图

您可以切片arr并使用实际的二进制值强制转换bool以掩盖数组,并在存在1s的情况下切片分配

a_view = arr[:,2:,2:]
a_view[a_view.astype('bool')] = np.array(values).ravel()

print(arr)
array([[[ 0.,  1., 43., 25., 21.],
        [ 0.,  0.,  0.,  0.,  0.],
        [ 0., 43.,  0.,  2.,  0.],
        [ 0., 43.,  3.,  0.,  1.],
        [ 0., 45.,  0.,  4.,  0.]],

       [[ 0.,  1., 38., 29., 46.],
        [ 0.,  0.,  0.,  0.,  0.],
        [ 0., 32.,  0.,  0.,  4.],
        [ 0., 26.,  0.,  0.,  1.],
        [ 0., 30.,  5.,  9.,  0.]]])

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从numpy中的3d数组中删除2d子数组

来自分类Dev

如何使用numpy在现有2D数组中添加2D子数组?

来自分类Dev

在3D数组中查找2D数组

来自分类Dev

使用数组索引将2D数组功能应用于3D数组

来自分类Dev

在numpy中使用2d蒙版对3d数组进行蒙版

来自分类Dev

如果满足条件,则在 3D 数组中替换 2D 子数组

来自分类Dev

如何在3D Numpy数组中查找2D数组的行

来自分类Dev

用numpy中的3d数组索引2d数组

来自分类Dev

通过乘以numpy中的向量将2D数组转换为3D数组

来自分类Dev

Python:从 3d numpy 数组中的 2d 数组访问保存的点

来自分类Dev

如何使用NumPy以矢量化方式按2D数组缩放一组2D数组(3D数组)?

来自分类Dev

使用2d数组将3d numpy数组转换为1列pandas df

来自分类Dev

从 3D numpy 数组中提取 2D

来自分类Dev

使用PHP将3D数组转换为2D数组

来自分类Dev

使用2D数组沿1轴索引3D数组

来自分类Dev

使用 2D 数组中的元素(不包括第一个)创建 3D 数组

来自分类Dev

如何将2D numpy数组与3D数组矩阵相乘以得到3D数组?

来自分类Dev

从2D numpy数组快速计算随机的3D numpy数组

来自分类Dev

将2d numpy数组连接到3d numpy数组

来自分类Dev

如何将2d numpy数组列表连接到3d numpy数组?

来自分类Dev

将多个 2d numpy 数组放入 3d numpy 数组

来自分类Dev

我应该如何用numpy将3d数组中的1d数组乘以2d矩阵

来自分类Dev

在numpy中获取3D数组的2D切片的平均值

来自分类Dev

重新排列numpy数组中的元素以在2d中绘制3d数组,并保留分组

来自分类Dev

将2D数组复制到3D数组-Python / NumPy

来自分类Dev

如何用numpy对3D数组的内部2d数组进行排序?

来自分类Dev

用2d数组索引3d numpy数组

来自分类Dev

从基本2D数组构造3D数组-Numpy

来自分类Dev

Numpy对2D数组进行操作以生成3D数组

Related 相关文章

  1. 1

    从numpy中的3d数组中删除2d子数组

  2. 2

    如何使用numpy在现有2D数组中添加2D子数组?

  3. 3

    在3D数组中查找2D数组

  4. 4

    使用数组索引将2D数组功能应用于3D数组

  5. 5

    在numpy中使用2d蒙版对3d数组进行蒙版

  6. 6

    如果满足条件,则在 3D 数组中替换 2D 子数组

  7. 7

    如何在3D Numpy数组中查找2D数组的行

  8. 8

    用numpy中的3d数组索引2d数组

  9. 9

    通过乘以numpy中的向量将2D数组转换为3D数组

  10. 10

    Python:从 3d numpy 数组中的 2d 数组访问保存的点

  11. 11

    如何使用NumPy以矢量化方式按2D数组缩放一组2D数组(3D数组)?

  12. 12

    使用2d数组将3d numpy数组转换为1列pandas df

  13. 13

    从 3D numpy 数组中提取 2D

  14. 14

    使用PHP将3D数组转换为2D数组

  15. 15

    使用2D数组沿1轴索引3D数组

  16. 16

    使用 2D 数组中的元素(不包括第一个)创建 3D 数组

  17. 17

    如何将2D numpy数组与3D数组矩阵相乘以得到3D数组?

  18. 18

    从2D numpy数组快速计算随机的3D numpy数组

  19. 19

    将2d numpy数组连接到3d numpy数组

  20. 20

    如何将2d numpy数组列表连接到3d numpy数组?

  21. 21

    将多个 2d numpy 数组放入 3d numpy 数组

  22. 22

    我应该如何用numpy将3d数组中的1d数组乘以2d矩阵

  23. 23

    在numpy中获取3D数组的2D切片的平均值

  24. 24

    重新排列numpy数组中的元素以在2d中绘制3d数组,并保留分组

  25. 25

    将2D数组复制到3D数组-Python / NumPy

  26. 26

    如何用numpy对3D数组的内部2d数组进行排序?

  27. 27

    用2d数组索引3d numpy数组

  28. 28

    从基本2D数组构造3D数组-Numpy

  29. 29

    Numpy对2D数组进行操作以生成3D数组

热门标签

归档