拆分numpy字符并添加字符

2024-04-24 22:38:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据,目前是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')

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

  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

有没有快速和Python的方式做这??!!你知道吗


Tags: 数据numpy方式dtype冒号chararray公司地址radec
2条回答

I'd like to simply split the radec variable after the 9th digit…
radec[0] 000000.45+174625.4' becomes ra[0] = 00:00:00.45 and dec[0] = +17:46:25.4

拆分可以通过构造具有适当数据类型的变量内存视图来完成:

t = numpy.dtype([('ra', 'U9'), ('dec', 'U9')])
ra  = radec.view(t)['ra']
dec = radec.view(t)['dec']

… and then add colons

也可以使用视图方法(ab)完成此操作:

ra  = [":".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"))]

在最近的一篇文章中,我比较了作用于数组字符串的各种方式:

Create an array with a letter repeated a given number of times given by another array

结果发现np.char(或chararray方法)并不比列表理解快。np.frompyfunc最快。你知道吗

因此根据经验,我认为您需要只修改一个字符串,而将任何numpy加速留待以后。你知道吗

如前所述,一个复杂的问题是,当您应用split时,会得到一个列表数组;两个单词将替换原来的一个。你知道吗

不深入细节,我怀疑添加“:”将需要re,或者某种迭代(对字符串的列表理解?)。你知道吗

相关问题 更多 >