python - 如何使用范围(开始索引,结束索引)索引数组操作 numpy 数组的元素?
问题描述
我有一个名为的简单一维 NumPy 数组ar1
和另一个显示被调用的范围索引(开始索引、结束索引)的ar1
数组idx
。结构看起来像这样:
ar1 = np.zeros((m*n))
idx = np.array(
[[1,10],
[40,80],
[100,110]] )
现在我想ar1
使用我在idx
. 换句话说,我正在寻找一种使用Numpy函数和技巧来操作ar1
1到 10、40 到 80和100 到 110元素的有效方法,例如,将它们设置为数字 255。
我该怎么做?
解决方案
只生成一次所有所需的索引怎么样,这对您的应用程序来说会很慢吗?像这样思考:
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
推荐阅读
- python - 如何在不更改 Pandas 0.20.1 中的列顺序的情况下连接 pandas Dataframes?
- sql-server - Copy varchar column data to date column
- spring-boot - Spring Boot 从 1.5.x 迁移到 2.1.x 后无法运行 Eureka Client Application
- qt - 为什么 QML 速度太慢,无法绘制包含约 4000 个简单元素的场景?
- arrays - 在 Excel 中将 Texbox 字符串传递给 countif
- r - 如何让 c 返回一个表达式?
- python - Auto_arima 参数选择
- spring - 自动装配 HibernateTemplate 时不创建 Bean
- python-3.x - ValueError:无法将大小为 13 的序列复制到维度为 200 的数组轴
- django - auto_now_add 在 Django 单元测试中创建 NotNullViolation