我有一个numpy nd数组.我的任务的简化版本是沿每个轴取一个向量.为了显示:
import numpy
x = numpy.array(range(24)).reshape((2,3,4))
x0 = x[0,0,:]
x1 = x[0,:,0]
x2 = x[:,0,0]
Run Code Online (Sandbox Code Playgroud)
但是,我不一定知道x将具有的维数.因此,挑战在于如何将冒号:索引运算符放在可变位置.这种语法的示例如下:
n = x.ndim
ind = list(np.zeros(n))
dim = 0
ind[dim] = ':'
y = x[ind]
Run Code Online (Sandbox Code Playgroud)
要么
y = indexer.index(x,ind)
Run Code Online (Sandbox Code Playgroud)
对于某些模块索引器.我可以写它,但我觉得这必须已经解决,我不能成为唯一一个想要这样做的人.例如,在MATLAB中,您可以使用subsref()函数执行此操作.
python/numpy/other模块中是否存在任何此类构造?
我试图将两个不同大小的数组的python/numpy索引联系起来,但我不能通过子程序将索引一从小数组传递到大数组.
例如,我有两个numpy数组:a1和a2.a1.shape = (240,33,258)和a2.shape = (240,40,33,258).我在a1中找到索引并将这些索引与之相关联a2.即.,index1 = numpy.where(a > n).我可以抓住我感兴趣的数据
dat1 = a1[index]
dat2 = a2[index[0],:,index[1],index[2]]
Run Code Online (Sandbox Code Playgroud)
结果数据形状为dat1.shape = (n)和dat2.shape = (n, 40).为了加速程序,我想通过一个子程序传递索引,但我不能通过[index[0],:,index[1],index[2]]一个子程序,因为我不能传递冒号':'.
我相信我的解决方案是在子程序中将等效数字传递给':',但我还没有找到答案.
有帮助吗?
非常感谢你