Как объединить смешанный список из 1d и 0d numpy массивов? - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь объединить список массивов, который представляет собой смесь нулевых и одномерных массивов.Они являются результатом genfromtxt в некоторых выходных файлах.Ниже приводится минимальный пример, который мне не подходит:

from numpy import array, concatenate
array1 = array([1.0, 2.0])
array2 = array(3.0)
concatenate([array1, array2])

Этот код выдает ошибку:

ValueError: zero-dimensional arrays cannot be concatenated

Есть ли способ объединить в одну строку список из 1d и0d?Спасибо.

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

вы забыли [] когда вы объявили второй массив

from numpy import array, concatenate
array1 = array([1.0, 2.0])
array2 = array([3.0])
print(concatenate([array1, array2]))

вывод:

[1. 2. 3.]
0 голосов
/ 26 апреля 2018
a = np.array([1,2])
b = np.array(3)

Добавьте размер, затем сложите

>>> np.hstack([a, b[None,]])
array([1, 2, 3])

>>> np.hstack([a, b.reshape(1)])
array([1, 2, 3])

>>> np.concatenate((a, b.reshape(1)))
array([1, 2, 3])
0 голосов
/ 26 апреля 2018

Python предоставляет функцию atleast_1d, поэтому для решения проблемы

from numpy import array, concatenate, atleast_1d
array1 = array([1.0, 2.0])
array2 = array(3.0)
concatenate([atleast_1d(a) for a in [array1, array2]])

и в моей первоначальной задаче

concatenate([atleast_1d(a) for a in mixed_list])

решит проблему конкатенации.

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