Я пытаюсь объединить список массивов, который представляет собой смесь нулевых и одномерных массивов.Они являются результатом genfromtxt в некоторых выходных файлах.Ниже приводится минимальный пример, который мне не подходит:
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?Спасибо.
вы забыли [] когда вы объявили второй массив
from numpy import array, concatenate array1 = array([1.0, 2.0]) array2 = array([3.0]) print(concatenate([array1, array2]))
вывод:
[1. 2. 3.]
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])
Python предоставляет функцию atleast_1d, поэтому для решения проблемы
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])
решит проблему конкатенации.