如何用半指定的暗角创建一个空的numpy数组?

时间:2019-06-20 05:49:25

标签: python arrays json numpy object

我试图从这样的服务器读取数据:

with requests.Session() as s:
    data = {}
    r = s.get('https://something.com' , json = data ).json()
    training_set1 = np.empty([-1,4])
    training_set1[:,0] = r["o"]
    training_set1[:,1] = r["h"]
    training_set1[:,2] = r["l"]
    training_set1[:,3] = r["c"]

但是我不知道数组的长度,所以我使用了-1并得到了以下错误消息:

  

ValueError:不允许使用负尺寸

如何解决此代码?响应r是一个JSON对象:

{"t":[1322352000,1322438400], 
 "o":[123,123], 
 "h":[123,123], 
 "l":[123,123], 
 "c":[123,123]}

我正在尝试将其重新排列为一个numpy数组。

2 个答案:

答案 0 :(得分:1)

Numpy数组的大小固定。您不能初始化动态大小的数组。您可以使用列表列表,然后将列表转换为numpy数组。

r["x"]是列表的情况下,类似的事情应该起作用。 (未经测试的代码)

with requests.Session() as s:
    data = {}
    r = s.get('https://something.com' , json = data ).json()
    t_set1 = []
    t_set1.append(r["o"])
    t_set1.append(r["h"])
    t_set1.append(r["l"])
    t_set1.append(r["c"])
training_set1 = np.array(t_set1)

编辑:在OP编辑问题后,针对订单"o","h","l",""c进行了编辑

答案 1 :(得分:1)

您不能声明具有未知维的numpy数组。但是您可以在一个操作中声明它:

training_set1 = np.array([r["o"], r["o"], r["h"], r["l"]])

甚至更好:

training_set1 = np.array([r[i] for i in "oohl"])