将3D numpy数组的参数传递到4D numpy数组

2024-09-29 01:23:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想根据numpy.argsort文件在该阵列的简化3D版本上进行评估。像这样:

array.shape
    (7, 3178, 3178, 3)
array_reduced.shape
    (7, 3178, 3178)
args=numpy.argsort(array_reduced,axis=0)
array_sorted=array[args,:]

这将返回内存错误:

    ---------------------------------------------------------------------------
    MemoryError                               Traceback (most recent call last)
    <ipython-input-48-04f432d9e05d> in <module>()
          ----> 1 array_sorted=array[args,:]

    MemoryError:

关于如何转换lambda函数,这可能是一个愚蠢的错误,但是如果有人能帮助我,我将非常感激!你知道吗

-----------------------------------编辑--------------------------------

此代码执行我希望它执行的操作,但速度很慢:

array_sorted=np.zeros(array.shape,dtype=np.uint8)
for thet in range (0, array.shape[0]):
    print(thet)
    for y in range (0, array.shape[1]):
        for x in range (0, array.shape[2]):
            array_sorted[thet,y,x,0]=(array[args[thet,y,x],y,x,0])
            array_sorted[thet,y,x,1]=(array[args[thet,y,x],y,x,1])
            array_sorted[thet,y,x,2]=(array[args[thet,y,x],y,x,2])

Tags: 文件innumpyfor错误npargsrange