gpt4 book ai didi

python - 扁平化numpy数组,还能保留值位置的索引?

转载 作者:行者123 更新时间:2023-12-03 16:00:22 24 4
gpt4 key购买 nike

我有几个2D numpy数组(矩阵),对于每个数组,我想将其转换为包含数组值的向量和包含每个行/列索引的向量。

例如,我可能有一个像这样的数组:

x = np.array([[3, 1, 4],
[1, 5, 9],
[2, 6, 5]])

我基本上想要这些值
[3, 1, 4, 1, 5, 9, 2, 6, 5]

和他们的位置
[[0,0], [0,1], [0,2], [1,0], [1,1], [1,2], [2,0], [2,1], [2,2]]

我的最终目标是将它们像这样的列放入pandas DataFrame中:
V | x | y
--+---+---
3 | 0 | 0
1 | 0 | 1
4 | 0 | 2
1 | 1 | 0
5 | 1 | 1
9 | 1 | 2
6 | 2 | 0
5 | 2 | 1
3 | 2 | 2

其中V是值,x是行位置(索引),y是列位置(索引)。

我想我可以一起破解一些东西,但是我试图找到一种有效的方式来做到这一点,而不是四处摸索。例如,我知道我可以使用 x.reshape(x.size, 1)这样的值来获取值,并且可以尝试从 x.shape创建索引列,但是似乎应该有更好的方法。

最佳答案

我不知道它是否最有效,但是 numpy.meshgrid 是为此设计的:

x = np.array([[3, 1, 4],
[1, 5, 9],
[2, 6, 5]])
XX,YY = np.meshgrid(np.arange(x.shape[1]),np.arange(x.shape[0]))
table = np.vstack((x.ravel(),XX.ravel(),YY.ravel())).T
print(table)
这将产生:
[[3 0 0]
[1 1 0]
[4 2 0]
[1 0 1]
[5 1 1]
[9 2 1]
[2 0 2]
[6 1 2]
[5 2 2]]
然后,我认为 df = pandas.DataFrame(table)将为您提供所需的数据帧。

关于python - 扁平化numpy数组,还能保留值位置的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31081067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com