首页 > 解决方案 > 如何使用范围(开始索引,结束索引)索引数组操作 numpy 数组的元素?

问题描述

我有一个名为的简单一维 NumPy 数组ar1和另一个显示被调用的范围索引(开始索引、结束索引)的ar1数组idx。结构看起来像这样:

ar1 = np.zeros((m*n))   
idx = np.array(
    [[1,10],
     [40,80],
     [100,110]] )

现在我想ar1使用我在idx. 换句话说,我正在寻找一种使用Numpy函数和技巧来操作ar11到 1040 到 80100 到 110元素的有效方法,例如,将它们设置为数字 255。
我该怎么做?

标签: pythonnumpy

解决方案


只生成一次所有所需的索引怎么样,这对您的应用程序来说会很慢吗?像这样思考:

def generate_indices( all_ranges ):
    """Take a list of ranges and explicitly create all indices"""
    indices = []
    for sub_range in all_ranges:
        indices += range( sub_range[0], sub_range[1] ) 
    return np.array( indices )

然后你可以操纵为

m=n=25
ar1 = np.zeros((m*n))   
idx = np.array(
    [[1,10],
     [40,80],
     [100,110]] )
indices = generate_indices( idx )
ar1[indices] = 255

推荐阅读