gpt4 book ai didi

arrays - 我有索引向量。如何在每一行的给定索引处设置一个?

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:18 25 4
gpt4 key购买 nike

我有一个向量 y,其整数值为 1 到 10:

octave> size(y)
ans =

5000 1

我创建了 zeros 数组 y1:

octave> size(y1)
ans =

5000 10

我需要在 y2 的每一行中设置 1,在索引等于 y 中的值的元素中。所以在第一行,当我有:

octave> y(1)
ans = 10

我需要:

octave> y1(1,:)
ans =

0 0 0 0 0 0 0 0 0 1

[w, y] = max(y2, [], 2); 相反的东西我在代码的其他地方有。

是否有一个简单的单行技巧可以做到这一点?如果不是,我如何同时遍历两个数组?

最佳答案

你可以使用这个技巧

y1 = eye(10)(y,:);

或者是两步版本

y1 = eye(10);
y1 = y1(y,:);

解释

第一步你创建一个单位矩阵

  >> y1 = eye(10)    

y1 =

Diagonal Matrix

1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1

在第二步中,您使用 y 作为单位矩阵中的索引。此步骤从字面上复制单位矩阵中的行并创建所需的矩阵。

>> y = [1,1,2,2,5,10,10];
>> y1 = y1(y,:)
y1 =

1 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 1

关于arrays - 我有索引向量。如何在每一行的给定索引处设置一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23171386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com