通过使用一维索引向量来缩小3d到2d数组

哈瑟

我有一个M x N x O矩阵,我想MxN使用b大小向量将其简化为MATLAB中矩阵,该向量M包含要保留的第三维元素的索引。

然后,它要做的是构建一个2d数组,并从原始3d数组的各个页面中选择其条目。

我有这个循环,但是我对无循环解决方案感兴趣。

for i = 1:M
    for j = 1:N
        tmp(i, j) = P(i, j, b(i));
    end
end
烧杯

最简单的方法可能就是删除j代码中的循环:

for ii = 1:M
    tmp(ii, :) = P(ii, :, b(ii));
end

但是为了比较起见,这是一个没有循环的解决方案。


给定一个3d数组P

M = 7;
N = 5;
O = 6;
P = ones(M, N, O) .* permute(1:O, [3 1 2]);

(在这种情况下,我使用了3d数组,其中每个元素均等于其O索引)
b,大小为Mx1,其值来自1..O

b = randi(O, M, 1)

您可以构造的所有元素的下标,P(:,:,1)并用于b选择要使用的平面:

[rr, cc] = ndgrid(1:M, 1:N);
inds = sub2ind(size(P), rr(:), cc(:), b(rr(:)));
tmp = reshape(P(inds), M, N)

为了:

b.' =    5   4   1   5   3   1   3

我们得到:

tmp =

   5   5   5   5   5
   4   4   4   4   4
   1   1   1   1   1
   5   5   5   5   5
   3   3   3   3   3
   1   1   1   1   1
   3   3   3   3   3

每行的元素都b与预期中的元素相对应

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过扩展一维向量来形成一个 3d 数组

来自分类Dev

如何使用索引向量对3D ndarray进行切片

来自分类Dev

如何使用索引向量对3D ndarray进行切片

来自分类Dev

R:使用索引向量访问2D矩阵的元素

来自分类Dev

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

来自分类Dev

如何通过在MATLAB中控制2D数组的列来创建3D数组?

来自分类Dev

R-通过删除x,y和z维的全零2D矩阵来调整3D数组的大小

来自分类Dev

一维数组,用于索引3D矩阵

来自分类Dev

使用索引向量访问R中的n维数组

来自分类Dev

MATLAB是否提供一种更优雅的方法来遍历3D数组以获得3维向量?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

通过R中的数组索引向量

来自分类Dev

通过R中的数组索引向量

来自分类Dev

将2D数组追加到3D数组,扩展三维

来自分类Dev

更好地使用一个3d数组或两个2d?

来自分类Dev

从2D numpy数组(线性索引)获取x,y,value一维数组

来自分类Dev

每个索引中2d数组大小不同的3维数组

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何通过围绕中心元素旋转一维数字矢量来创建2D图像?

来自分类Dev

通过在2D曲面中投影来分析3D点云

来自分类Dev

通过在 Matlab 中内插 3D 矩阵的层来获得内插的 2D 矩阵

来自分类Dev

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

来自分类Dev

Java-将3D数组的内容关联到新的2D数组

来自分类Dev

函数中的C memcpy 2D数组到3D数组

来自分类Dev

python从2D数组到3D坐标数组

来自分类Dev

根据分布随机地重新放置numpy数组的选定元素?(将2D数组的维数扩展为3D,并使用随机数)

来自分类Dev

如何通过at()函数访问2D向量的索引?

Related 相关文章

  1. 1

    如何通过扩展一维向量来形成一个 3d 数组

  2. 2

    如何使用索引向量对3D ndarray进行切片

  3. 3

    如何使用索引向量对3D ndarray进行切片

  4. 4

    R:使用索引向量访问2D矩阵的元素

  5. 5

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

  6. 6

    如何通过在MATLAB中控制2D数组的列来创建3D数组?

  7. 7

    R-通过删除x,y和z维的全零2D矩阵来调整3D数组的大小

  8. 8

    一维数组,用于索引3D矩阵

  9. 9

    使用索引向量访问R中的n维数组

  10. 10

    MATLAB是否提供一种更优雅的方法来遍历3D数组以获得3维向量?

  11. 11

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

  12. 12

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

  13. 13

    通过R中的数组索引向量

  14. 14

    通过R中的数组索引向量

  15. 15

    将2D数组追加到3D数组,扩展三维

  16. 16

    更好地使用一个3d数组或两个2d?

  17. 17

    从2D numpy数组(线性索引)获取x,y,value一维数组

  18. 18

    每个索引中2d数组大小不同的3维数组

  19. 19

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

  20. 20

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

  21. 21

    如何通过围绕中心元素旋转一维数字矢量来创建2D图像?

  22. 22

    通过在2D曲面中投影来分析3D点云

  23. 23

    通过在 Matlab 中内插 3D 矩阵的层来获得内插的 2D 矩阵

  24. 24

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

  25. 25

    Java-将3D数组的内容关联到新的2D数组

  26. 26

    函数中的C memcpy 2D数组到3D数组

  27. 27

    python从2D数组到3D坐标数组

  28. 28

    根据分布随机地重新放置numpy数组的选定元素?(将2D数组的维数扩展为3D,并使用随机数)

  29. 29

    如何通过at()函数访问2D向量的索引?

热门标签

归档