gpt4 book ai didi

python - numpy - 使用给定数组值的切片更新值

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

假设我有以下数组

import numpy as np
a = np.arange(0,36).reshape((6,6)).T

[[ 0 6 12 18 24 30]
[ 1 7 13 19 25 31]
[ 2 8 14 20 26 32]
[ 3 9 15 21 27 33]
[ 4 10 16 22 28 34]
[ 5 11 17 23 29 35]]


for i in a[:,0]:
a[i][i:] = 0

[[ 0 0 0 0 0 0]
[ 1 0 0 0 0 0]
[ 2 8 0 0 0 0]
[ 3 9 15 0 0 0]
[ 4 10 16 22 0 0]
[ 5 11 17 23 29 0]]

我想知道是否可以使用“第一列”作为轴 =1 上切片开始的指示符来更新(删除)值,并且无需执行此操作使用循环。

请注意“第一列”中的值不一定按示例中所示的顺序排列,因此 numpy.tril 在这里不适合我。我确实知道“第一列”中的值永远不会大于 axis=1 的大小。

最佳答案

这样的事情怎么样?请注意,我已经打乱了第一列的顺序。

>>> a = np.arange(0,36).reshape((6,6)).T; a[2,0] = 4; a[4,0] = 2;
>>> a
array([[ 0, 6, 12, 18, 24, 30],
[ 1, 7, 13, 19, 25, 31],
[ 4, 8, 14, 20, 26, 32],
[ 3, 9, 15, 21, 27, 33],
[ 2, 10, 16, 22, 28, 34],
[ 5, 11, 17, 23, 29, 35]])
>>> a[np.arange(a.shape[1])[None,:] >= a[:,0,None]] = 0
>>> a
array([[ 0, 0, 0, 0, 0, 0],
[ 1, 0, 0, 0, 0, 0],
[ 4, 8, 14, 20, 0, 0],
[ 3, 9, 15, 0, 0, 0],
[ 2, 10, 0, 0, 0, 0],
[ 5, 11, 17, 23, 29, 0]])

关于python - numpy - 使用给定数组值的切片更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21648667/

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