将numpy数组转换为CSV字符串,将CSV字符串转换为numpy数组 [英] Convert a numpy array to a CSV string and a CSV string back to a numpy array

查看:1007
本文介绍了将numpy数组转换为CSV字符串,将CSV字符串转换为numpy数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须将一个浮点数数组转换为一个字符串(存储在SQL DB中),然后将同一个字符串转换回numpy浮点数组。

I have to convert a numpy array of floats to a string (to store in a SQL DB) and then also convert the same string back into a numpy float array.

这是我要使用字符串的方式(基于本文

This is how I'm going to a string (based on this article)

VIstring = ''.join(['%.5f,' % num for num in VI])
VIstring= VIstring[:-1] #Get rid of the last comma

它是一个很好的方式去?是他们更好的方式摆脱最后一个逗号?或者我可以通过加入方法为我插入逗号吗?

So firstly this does work, is it a good way to go? Is their a better way to get rid of that last comma? Or can I get the join method to insert the commas for me?

然后其次,更重要的是一个聪明的方法从字符串返回一个float数组?

Then secondly,more importantly, is there a clever way to get from the string back to a float array?

这里是一个数组和字符串的例子:

Here is an example of the array and the string:

VI
array([ 17.95024446,  17.51670904,  17.08894626,  16.66695611,
        16.25073861,  15.84029374,  15.4356215 ,  15.0367219 ,
        14.64359494,  14.25624062,  13.87465893,  13.49884988,
        13.12881346,  12.76454968,  12.40605854,  12.00293814,
        11.96379322,  11.96272486,  11.96142533,  11.96010489,
        11.95881595,  12.26924591,  12.67548634,  13.08158864,
        13.4877041 ,  13.87701221,  14.40238245,  14.94943786,
        15.49364166,  16.03681428,  16.5498035 ,  16.78362298,
        16.90331119,  17.02299387,  17.12193689,  17.09448654,
        17.00066063,  16.9300633 ,  16.97229868,  17.2169709 ,  17.75368411])

VIstring
'17.95024,17.51671,17.08895,16.66696,16.25074,15.84029,15.43562,15.03672,14.64359,14.25624,13.87466,13.49885,13.12881,12.76455,12.40606,12.00294,11.96379,11.96272,11.96143,11.96010,11.95882,12.26925,12.67549,13.08159,13.48770,13.87701,14.40238,14.94944,15.49364,16.03681,16.54980,16.78362,16.90331,17.02299,17.12194,17.09449,17.00066,16.93006,16.97230,17.21697,17.75368'

是的,从%5f 的精度损失是完全正确的,原点只有4个小数位精度,所以我不需要打那个。所以在恢复numpy数组时,我很高兴只获得5位小数位精度(显然我认为)

Oh yes and the loss of precision from the %.5f is totally fine, these values are interpolated by the original points only have 4 decimal place precision so I don't need to beat that. So when recovering the numpy array, I'm happy to only get 5 decimal place precision (obviously I suppose)

推荐答案

应该使用 join 这样避免最后一个逗号问题:

First you should use join this way to avoid the last comma issue:

VIstring = ','.join(['%.5f' % num for num in VI])

然后读回来,使用 numpy.fromstring

np.fromstring(VIstring, sep=',')

这篇关于将numpy数组转换为CSV字符串,将CSV字符串转换为numpy数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆