假设我有数组:
[[2,1,5,2],
[1,4,2,1],
[4,5,5,7],
[1,5,9,3]]
我试图将数组转置为 (16, 3) 形状,其中结果数组中的前两个元素是索引号,最后一个元素是值。例如:
[[0, 0, 2], [1, 0, 1], [2, 0, 5], [3, 0, 2], [0, 1, 4], ... .]
这可以通过 numpy 函数或类似函数实现吗?或者我必须用我自己的函数来做到这一点?
工作示例代码:
import numpy as np
src = np.array([[2,1,5,2],
[1,4,2,1],
[4,5,5,7],
[1,5,9,3]])
dst = np.array([])
for x in range(src.shape[0]):
for y in range(src.shape[1]):
dst = np.append(dst, [[y, x, src[x][y]]])
print(dst.reshape(16,3))
最佳答案
我不知道 numpy 中是否有一个函数可以实现这一点,但您可以使用列表理解来轻松构建该数组:
import numpy as np
src = np.array([[2,1,5,2],
[1,4,2,1],
[4,5,5,7],
[1,5,9,3]])
dst = np.array([ [y, x, src[x][y]]
for x in range(src.shape[0])
for y in range(src.shape[1])])
print(dst.reshape(16,3))
希望这能有所帮助。
关于python - 将数组索引插入转置数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58015348/