python - 使用元组的 Numpy 数组切片
问题描述
我已经阅读了关于切片的 numpy 文档(尤其是它讨论变量数组索引的底部) https://docs.scipy.org/doc/numpy/user/basics.indexing.html
但我仍然不确定如何执行以下操作:编写一个方法,该方法要么返回一组 3D 索引,要么返回一组 4D 索引,然后用于访问数组。我想为基类编写一个方法,但是从它派生的类可以访问 3D 或 4D,具体取决于实例化的派生类。
示例代码来说明想法:import numpy as np
a = np.ones([2,2,2,2])
size = np.shape(a)
print(size)
for i in range(size[0]):
for j in range(size[1]):
for k in range(size[2]):
for p in range(size[3]):
a[i,j,k,p] = i*size[1]*size[2]*size[3] + j*size[2]*size[3] + k*size[3] + p
print(a)
print('compare')
indices = (0,:,0,0)
print(a[0,:,0,0])
print(a[indices])
简而言之,我正在尝试获取一个元组(或其他东西),它可用于根据我填充元组的方式进行以下两种访问:
a[i, 0, :, 1]
一个[我, :, 1]
slice 方法看起来很有希望,但它似乎需要一个范围,我只想要一个“:”,即整个维度。变量 numpy 数组维度访问有哪些选项?
解决方案
In [324]: a = np.arange(8).reshape(2,2,2)
In [325]: a
Out[325]:
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
切片:
In [326]: a[0,:,0]
Out[326]: array([0, 2])
In [327]: idx = (0,slice(None),0) # interpreter converts : into slice object
In [328]: a[idx]
Out[328]: array([0, 2])
In [331]: idx
Out[331]: (0, slice(None, None, None), 0)
In [332]: np.s_[0,:,0] # indexing trick to generate same
Out[332]: (0, slice(None, None, None), 0)
推荐阅读
- rxjs - combineLatest 已弃用,取而代之的是静态 combineLatest
- javascript - 访问javascript中的元素
- ibm-cloud - IBM Cloud Node-RED Manage Palette 不安装项目
- datepicker - 安装“element-ui”时如何禁用“日期选择器”中的天数:“^2.3.7”?
- sql-server - 对来自 Union (SQL Server) 的 SQL 结果进行分组
- powershell - Invoke-WebRequest 的 SSL/TLS 问题
- django - Django 模型字段可调用默认值不起作用
- ios - 如何同时将 iOS 应用程序编译到多个模拟器?
- twitter-bootstrap - 我在折叠模式下的引导模板导航栏不起作用
- r - 杰卡德系数的独特原理