猿问

拆分一个 numpy 字符数组并添加字符

我有以下数据,目前是一个 numpy.chararray:


>>> radec

chararray(['000000.45+174625.4', '000000.66+145828.8',

       '000000.97+044947.2', ..., '235959.74+100700.4',

       '235959.78+285717.0', '235959.83+344315.0'], dtype='<U18')

我想简单地在第 9 位之后拆分 radec 变量,然后添加冒号以将两个变量作为输出,例如:


  00:00:00.45 +17:46:25.4

  00:00:00.66 +14:58:28.8

  ...

  23:59:59.78 +28:57:17.0 

  23:59:59.83 +34:43:15.0

有没有快速和pythonic的方法来做到这一点??!!


拉莫斯之舞
浏览 302回答 2
2回答

撒科打诨

我想在第 9 位之后简单地拆分 radec 变量......radec[0] 000000.45+174625.4' 变为 ra[0] = 00:00:00.45 和 dec[0] = +17:46:25.4可以通过使用适当的数据类型构造变量内存的视图来完成拆分:t = numpy.dtype([('ra', 'U9'), ('dec', 'U9')])ra&nbsp; = radec.view(t)['ra']dec = radec.view(t)['dec']...然后添加冒号这也可以(ab)使用 view 方法完成:ra&nbsp; = [":".join(x) for x in ra .view(numpy.dtype("U2,U2,U5"))]dec = [":".join(x) for x in dec.view(numpy.dtype("U3,U2,U4"))]

守候你守候我

在最近的 SO 中,我比较了对数组字符串进行操作的各种方式:创建一个数组,其中一个字母重复另一个数组给定的次数结果证明np.char(或chararray方法)并不比列表理解快。&nbsp;np.frompyfunc是最快的。因此,根据经验,我认为您需要专注于修改一个字符串,并将任何numpy加速留给以后。如前所述,一个复杂的问题是,当您应用 split 时,您会得到一个列表数组;两个词代替了原来的一个。在没有深入了解细节的情况下,我怀疑添加 ':' 将需要re,或者某种迭代(字符串上的列表理解?)。
随时随地看视频慕课网APP

相关分类

Python
我要回答