Как создать пустой массив numpy с полуопределенными dims? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь прочитать данные с сервера следующим образом:

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 ]

1 голос
/ 20 июня 2019

Вы не можете объявить массив с неизвестным измерением. Но вы можете объявить это за одну операцию:

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

или даже лучше:

training_set1 = np.array([r[i] for i in "oohl"])
1 голос
/ 20 июня 2019

Массивы 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)

Редактировать: отредактировано для заказа "o","h","l",""c после того, как OP отредактировал вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...