为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉莫斯之舞 2021-12-26 14:44:57
我有以下数据,目前是一个 numpy.chararray:>>> radecchararray(['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的方法来做到这一点??!!
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超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  = radec.view(t)['ra']

dec = radec.view(t)['dec']

...然后添加冒号


这也可以(ab)使用 view 方法完成:


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"))]


查看完整回答
反对 回复 2021-12-26
?
守候你守候我

TA贡献1802条经验 获得超10个赞

在最近的 SO 中,我比较了对数组字符串进行操作的各种方式:

创建一个数组,其中一个字母重复另一个数组给定的次数

结果证明np.char(或chararray方法)并不比列表理解快。 np.frompyfunc是最快的。

因此,根据经验,我认为您需要专注于修改一个字符串,并将任何numpy加速留给以后。

如前所述,一个复杂的问题是,当您应用 split 时,您会得到一个列表数组;两个词代替了原来的一个。

在没有深入了解细节的情况下,我怀疑添加 ':' 将需要re,或者某种迭代(字符串上的列表理解?)。


查看完整回答
反对 回复 2021-12-26
  • 2 回答
  • 0 关注
  • 301 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号