繁体   English   中英

从1D重塑为2D numpy数组后,如何返回元素的位置(索引)?

[英]How to return the position (Index) of an element after reshaping from 1D to 2D numpy array?

我有一个1d numpy数组,例如p=array([ 1,2,3,4,5,6,7,8,9,10,11,12])

在我的工作中,我需要将其更改为2d数组,例如

p_reshape = array([[1,2,3], 
                   [4,5,6],
                   [6,7,8],
                   [9,10,11]])

我还有其他函数可以返回元素i在p矩阵(1d)中的位置,即p(i)

现在,我想知道p(i)在转换后在二维矩阵p_reshape中的位置。

下面显示了从1d转换为2d的代码:

row=300
col=500
size=row*col
p=np.ones((size))
p_reshape=np.reshape((row,size))

我希望我能很好地表达我的想法。

我想你想要numpy.unravel_index

In [3]: import numpy as np
In [4]: p = np.array([ 1,2,3,4,5,6,7,8,9,10,11,12])

In [5]: p_reshape = p.reshape(4,3)

In [6]: p_reshape
Out[6]:
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

In [7]: np.unravel_index(5, p_reshape.shape)
Out[7]: (1, 2)

如果我对您的理解正确,则可以使用:

p_reshape[i // ncols, i % ncols]

不能吗

p = np.arange(1,13)
p_reshape = p.reshape((4,3))
ncols = p_reshape.shape[1]
all(p_reshape[i // ncols, i % ncols] == p[i] for i in range(p.size))

True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM