gpt4 book ai didi

python - 从 Numpy 数组中删除单引号

转载 作者:行者123 更新时间:2023-12-01 01:11:18 26 4
gpt4 key购买 nike

我有一个 Numpy 数组,其中元素用单引号引起来,我想将数据类型转换为 float 。

array = 
[['20150101' '0.12']
['20150102' '0.42']
['20150103' '0.12']
['20150104' '0.46']
['20150105' '0.14']
['20150106' '0.1']
['20150107' '0.27']
['20150108' '0.03']
['20150109' '0.16']
['20150110' '0.29']
['20150111' '0.32']
['20150112' '0.16']]

我尝试过:

values = array.item().split(' ')
new_array = np.asarray(values, dtype='float')

但我收到 ValueError: can only conversion an array of size 1 to a Python scalar。我希望输出如下所示:(没有单引号)

new_array = 
[[20150101 0.12]
[20150102 0.42]
[20150103 0.12]
[20150104 0.46]
[20150105 0.14]
[20150106 0.10]
[20150107 0.27]
[20150108 0.03]
[20150109 0.16]
[20150110 0.29]
[20150111 0.32]
[20150112 0.16]]

是否有一个 numpy 函数可以让我删除单引号?

最佳答案

您显示的是一个带有字符串dtype的二维数组,我可以使用它重新创建:

In [420]: arr = np.array([['20150101', '0.12'], 
...: ['20150102', '0.42'],
...: ['20150103', '0.12'],
...: ['20150104', '0.46']])
In [421]:
In [421]: arr
Out[421]:
array([['20150101', '0.12'], # the repr display
['20150102', '0.42'],
['20150103', '0.12'],
['20150104', '0.46']], dtype='<U8')
In [422]: print(arr) # the str display
[['20150101' '0.12']
['20150102' '0.42']
['20150103' '0.12']
['20150104' '0.46']]

引号反射(reflect)了数组的基本性质;它们不仅仅是数组的偶然部分。

转换为 float 据类型数组:

In [423]: arr.astype(float)                                                     
Out[423]:
array([[2.0150101e+07, 1.2000000e-01],
[2.0150102e+07, 4.2000000e-01],
[2.0150103e+07, 1.2000000e-01],
[2.0150104e+07, 4.6000000e-01]])

广泛的值需要科学记数法。第一列本身显示为:

In [424]: _[:,0]                                                                
Out[424]: array([20150101., 20150102., 20150103., 20150104.])

我可以混合使用整数和 float :

In [426]: arr1 = np.zeros((4,), dtype='i,f')                                    
In [427]: arr1
Out[427]:
array([(0, 0.), (0, 0.), (0, 0.), (0, 0.)],
dtype=[('f0', '<i4'), ('f1', '<f4')])
In [428]: arr1['f0'] = arr[:,0]
In [429]: arr1['f1'] = arr[:,1]
In [430]: arr1
Out[430]:
array([(20150101, 0.12), (20150102, 0.42), (20150103, 0.12),
(20150104, 0.46)], dtype=[('f0', '<i4'), ('f1', '<f4')])

这是一个一维结构化数组。请注意表示法的差异,包括 () 的使用。

关于python - 从 Numpy 数组中删除单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com