Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy-使用给定数组值的切片更新值_Python_Numpy_Pandas - Fatal编程技术网

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

Python numpy-使用给定数组值的切片更新值,python,numpy,pandas,Python,Numpy,Pandas,假设我有以下数组 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]

假设我有以下数组

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]])

我很抱歉直到现在才回复。这正是我所需要的。谢谢