gpt4 book ai didi

Python - 简单的 NumPy 数组未显示预期值

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:16 25 4
gpt4 key购买 nike

这里是Python新手。

我想我已经编写了一些非常简单的代码来仅从接收到的字符串中提取数字。

它似乎正在工作,除了我试图将检索到的数字存储在 NumPy 数组中以进行进一步处理,但我只看到“古怪”的数字。

import numpy as np
#import array
apiString = " 'open': 1.082865 'close': 1.08287 'min': 1.08266 'max': 1.08295 'volume': 888"
np_Myarr01 = np.empty([1,5], dtype=float)

def Find_numbers():
for word in apiString.split():
try:
thisNumber=float(word)
print ("Found", thisNumber)
Store_number(thisNumber)
except ValueError:
pass
return

def Store_number(thisNumber):
np.append(np_Myarr01, thisNumber)
print("store " + str(thisNumber))
return


# START OF MAIN PROGRAM

Find_numbers()
print (np_Myarr01)

*** 输出********************

Found 1.082865
store 1.082865
Found 1.08287
store 1.08287
Found 1.08266
store 1.08266
Found 1.08295
store 1.08295
Found 888.0
store 888.0
[[ 2.17306514e-316 0.00000000e+000 6.92674292e-310 6.92674292e-310
2.37151510e-322]]
<小时/>

我希望读取数组

[[ 1.082865  1.08287  1.08266  1.08295  888.0]]

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

您可以混合使用 str.split()re.searchapiString 中提取数字:

这个:

apiString = " 'open': 1.082865 'close': 1.08287 'min': 1.08266 'max': 1.08295 'volume': 888"

my_array = np.array([float(x) for x in apiString.split() if not re.search('[a-zA-Z]', x)])

将产生:

array([  1.082865,   1.08287 ,   1.08266 ,   1.08295 , 888.      ])

详细信息:

1) apiString.split() 会将字符串拆分为字符串列表,其中原始字符串中有空格

2) 如果字符串存储在 x 中,re.search('[a-zA-Z]', x) 将返回 True > 包含大写或小写字母(即不是数字)(这也是我们在这里使用 not 的原因)

3) float(x) 将字符串 '1.808' 转换为 float 类型

关于Python - 简单的 NumPy 数组未显示预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60307432/

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