我有一个大约10GB的相对较大的数据文件,其中包含三列,看起来像:
X Y Z
---- ---- ----
.10000E+05 100 35
.10000E+05 101 45
. . .
. . .
. . .
.10000E+05 400 45
.16730E+05 100 43
.16730E+05 101 25
. . .
. . .
. . .
.16730E+05 400 57
. . .
. . .
. . .
n 100 34
n 101 54
. . .
. . .
. . .
n 400 45
因此,基本上有两个自变量X
,Y
一个因变量Z
。数据NumPy
通过以下方式加载到数组中:
data = np.loadtxt('datafile.txt', skiprows = 2)
因此X
,Y
与Z
列对应于data[:,0]
,data[:,1]
和data[:,2]
分别。该X
列由公共部分组成,这些部分floats
是预先未知的,但是按升序排列(如示例中所示(.10000E+05,.16730E+05,...,n)
),我想对它们进行切片,以得到具有公共X
值的新数组。
如上所述,对这种数组进行切片的有效方法是什么?
我尝试了一种方法,该方法依赖于遍历该X
列并检查相邻元素是否相同,但这需要长时间在Python中运行。
numpy
具有一些功能,可以帮助您完成任务:
borders = data[0,:].searchsorted(numpy.unique(data[0,:]))
part0 = data[borders[0]:borders[1]]
但是我不建议将大型数组拆开,而是borders
在需要时使用对其进行索引。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句