【问题标题】:How to create an empty numpy array with semi-specified dims?如何使用半指定的暗淡创建一个空的 numpy 数组?
【发布时间】:2019-06-20 05:49:25
【问题描述】:

我正在尝试从这样的服务器读取数据:

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 数组。

【问题讨论】:

标签: python arrays json numpy object


【解决方案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 编辑

【讨论】:

  • 使用你的代码,数据的顺序好像有问题。
【解决方案2】:

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

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

甚至更好:

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

【讨论】:

  • 你为什么用oohl而不是cohl
  • @user145959 您编辑了问题。最初是oohl,现在是ohlc
猜你喜欢
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 2017-08-08
  • 2020-12-29
  • 2021-03-15
  • 1970-01-01
  • 2015-11-07
相关资源
最近更新 更多