Skip to main content
 首页 » 编程设计

python之具有元素作为其他对象索引的 Numpy 数组

2025年05月04日7zhwl

以下脚本根据包含在列表中的颜色渐变创建 RGB 数组。数组“cabbage”的元素是列表“cucumber”的索引。以下脚本创建了一个数组“cauliflower”,其形状与“cabbage”相同,但索引替换为“cucumber”中的相应元组。在 Numpy 中是否有更直接的方法来执行此过程?

from numpy import array, shape, zeros 
 
cabbage = array([[0,3,2],[3,2,1],[3,1,0]]) 
cucumber=[(0,100,0),(0,150,0),(0,200,0),(0,255,0)] 
rows ,cols = shape(cabbage) 
cauliflower = zeros((rows,cols),dtype=object) 
 
for row in range(rows): 
    for col in range(cols): 
        cauliflower[row,col]=cucumber[cabbage[row,col]] 
 
print cauliflower 
[[(0, 100, 0) (0, 255, 0) (0, 200, 0)] 
[(0, 255, 0) (0, 200, 0) (0, 150, 0)] 
[(0, 255, 0) (0, 150, 0) (0, 100, 0)]] 

请您参考如下方法:

Numpy 支持 fancy indexing :

>>> from numpy import array, shape, zeros 
>>> cabbage = array([[0,3,2],[3,2,1],[3,1,0]]) 
>>> cucumber=array([(0,100,0),(0,150,0),(0,200,0),(0,255,0)]) 
>>> cucumber[cabbage] 
array([[[  0, 100,   0], 
        [  0, 255,   0], 
        [  0, 200,   0]], 
 
       [[  0, 255,   0], 
        [  0, 200,   0], 
        [  0, 150,   0]], 
 
       [[  0, 255,   0], 
        [  0, 150,   0], 
        [  0, 100,   0]]])