Skip to main content
 首页 » 编程设计

python之分配给二维 NumPy 数组的切片

2025年05月04日11shihaiming

我想将 0 分配给二维数组的不同长度切片。

例子:

import numpy as np     
 
arr = np.array([[1,2,3,4], 
                [1,2,3,4], 
                [1,2,3,4], 
                [1,2,3,4]]) 
 
idxs = np.array([0,1,2,0]) 

给定上面的数组 arr 和索引 idxs 你如何分配给不同长度的切片。这样的结果是:

arr = np.array([[0,2,3,4], 
                [0,0,3,4], 
                [0,0,0,4], 
                [0,2,3,4]]) 

这些不起作用

slices = np.array([np.arange(i) for i in idxs]) 
arr[slices] = 0 

arr[:, :idxs] = 0 

请您参考如下方法:

您可以使用广播比较来生成掩码,并相应地索引到 arr 中:

arr[np.arange(arr.shape[1]) <= idxs[:, None]] = 0 

print(arr)  
array([[0, 2, 3, 4], 
       [0, 0, 3, 4], 
       [0, 0, 0, 4], 
       [0, 2, 3, 4]])