繁体   English   中英

从二维数组中获取值以列出行列位置

[英]Get values from 2d array to list with row an column position

我有一个像这样的二维数组(来源:csv 文件)(空值,大小 = 大约 5000rows x 5000cols):

[0,1,2,3,4,5,6,7,8,9]
[11,12,13,14,15,,17,18,19,20]
[21,22,,24,25,26,27,28,29,30]

现在我想要一个样式 [rowposition,columposition,value] 中所有值的列表

1,1,0
1,2,1
1,3,2
1,4,3
1,5,4
1,6,5
[..]
3,1,21
3,2,22
3,3,
3,4,24
[...]

(我知道它从 0 开始计数,而不是 1,但也许我们可以解决这个问题?)

不幸的是,我对 python 了解不多,我只有一个笨拙的 2d 矩阵 :D 但是我看到的是 Python 和 Numpy 是完成此类任务的最佳选择吗?

谢谢你的帮助!

你可以做:

import numpy as np

x = np.array([[0,1,2,3,4,5,6,7,8,9],
[11,12,13,14,15,16,17,18,19,20],
[21,22,23,24,25,26,27,28,29,30]])

y = np.hstack([np.argwhere(x==x), x.ravel().reshape(-1,1)])

输出:

[[ 0  0  0]
 [ 0  1  1]
 [ 0  2  2]
 [ 0  3  3]
 [ 0  4  4]
 [ 0  5  5]
 [ 0  6  6]
 [ 0  7  7]
 [ 0  8  8]
 [ 0  9  9]
 [ 1  0 11]
 [ 1  1 12]
 [ 1  2 13]
 [ 1  3 14]
 [ 1  4 15]
 [ 1  5 16]
 [ 1  6 17]
 [ 1  7 18]
 [ 1  8 19]
 [ 1  9 20]
 [ 2  0 21]
 [ 2  1 22]
 [ 2  2 23]
 [ 2  3 24]
 [ 2  4 25]
 [ 2  5 26]
 [ 2  6 27]
 [ 2  7 28]
 [ 2  8 29]
 [ 2  9 30]]

np.argwhere(x==x)返回符合条件的记录(即全部np.argwhere(x==x)所有坐标,按行顺序展平。 x.ravel()类似地逐行展平(其余的只是将这两个粘在一起)。

暂无
暂无

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

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