numpy 如何将矩阵中的整行/整列更改为相同的值

6l7fqoea  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(126)

所以我有这个3D阵列

x = np.zeros((9, 9))

产出:

[[0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0]]

并且我想将第x行和第y列的所有内容更改为1
所需输出:

[[0 0 0 0 0 1 0 0 0]
 [0 0 0 0 0 1 0 0 0]
 [0 0 0 0 0 1 0 0 0]
 [1 1 1 1 1 1 1 1 1]
 [0 0 0 0 0 1 0 0 0]
 [0 0 0 0 0 1 0 0 0]
 [0 0 0 0 0 1 0 0 0]
 [0 0 0 0 0 1 0 0 0]
 [0 0 0 0 0 1 0 0 0]]

我是在用布尔值而不是0和1的3D数组上这样做的,但我假设答案是相同的。

bhmjp9jg

bhmjp9jg1#

在广播中使用索引:

x[n] = 1

# or

x[n, :] = 1

示例:

x[3] = 1

# x

array([[0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0]])

对于第二个维度:

x[:, n] = 1

最后一个维度的通用方式:

x[..., n] = 1
fsi0uk1n

fsi0uk1n2#

因此,第一个索引用于行,第二个索引用于列。在您的示例中,如果要将第n行设置为1,只需执行以下操作:

x[n] = 1

我希望这能帮到你。

相关问题