python - 如何选择两个 numpy 索引的范围?
问题描述
我有一个简单的 numpy 数组,我想创建一个单独的数组,每两个索引取两个元素
例如:
x = np.arange(0,20)
print(x)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
我的目标是获得一系列
[2 3 6 7 10 11 14 15 18 19]
我该怎么做?我试过这个:
print(x[1:len(x)-1:2])
[ 1 3 5 7 9 11 13 15 17]
但我只得到其他所有索引。
解决方案
您可以使用传统约定简单地做到这一点,start:stop:step
而无需任何模数,方法是重塑您的数组、索引,然后将其展平。尝试这个 -
- 通过将其重塑为 (-1,2) 您可以创建二元序列
- 然后你只需从 1 和步骤 2 开始
- 最后你把它压平。
x.reshape(-1,2)[1::2].flatten()
array([ 2, 3, 6, 7, 10, 11, 14, 15, 18, 19])
这应该比使用数学运算来检查每个值的方法要快得多,因为这只是重塑和索引。
推荐阅读
- javascript - 如何删除 Webgl 中的特定对象(无库)
- docker - 运行 docker 容器时无法访问页面
- css - 滚动激活时的css高度计算
- flutter - 我们可以根据条件强制设置参数吗?
- certificate - 为什么证书在安装后仍被拒绝?
- reactjs - 反应钩子形式 - 类型错误:无法读取 L 处未定义的属性“拆分”(get.ts:6)
- sql - SQL Server - 带有 PARTITION 的 ROW_NUMBER(),如何获取多条记录?
- plot - 如何在牛虻图中设置图形大小或绘图大小(使用 Julia)?
- javascript - Javascript - 更改嵌套数组中所有对象键的名称
- javascript - 引导表排序删除分配给单元格的动态类