2013-08-20 3 views
0

В моей программе Python я конкатенирую несколько целых чисел и массив. Было бы интуитивно, если это будет работать:Массив Numpy: конкатенатные массивы и целые числа

x,y,z = 1,2,np.array([3,3,3]) 
np.concatenate((x,y,z)) 

Однако, вместо того, чтобы все Интсы должны быть преобразованы в np.arrays:

x,y,z = 1,2,np.array([3,3,3]) 
np.concatenate((np.array([x]),np.array([y]),z)) 

Особенно, если у вас есть много переменных, это руководство Конвертирования утомительная. Проблема в том, что x и y - 0-мерные массивы, а z - одномерные. Есть ли способ сделать конкатенацию без преобразования?

ответ

3

Они просто должны быть объектами последовательности, не обязательно Numpy массивы:

x,y,z = 1,2,np.array([3,3,3]) 
np.concatenate(([x],[y],z)) 
# array([1, 2, 3, 4, 5]) 

Numpy также действительно имеет insert функцию, которая будет делать это:

x,y,z = 1,2,np.array([3,3,3]) 
np.insert(z, [0,0], [x, y]) 

Я добавлю, что если вы просто попробуйте добавить целые числа в список, вам не нужно numpy, чтобы сделать это:

x,y,z = 1,2,[3,3,3] 
z = [x] + [y] + z 

или

x,y,z = 1,2,[3,3,3] 
[x, y] + z 

или

x,y,z = 1,2,[3,3,3] 
z.insert(0, y) 
z.insert(0, x) 
+0

Хех, это заставляет меня чувствовать себя немного глупо :). Спасибо за вашу помощь. Теперь я также понимаю, что существует разница между ints/float и типами последовательностей, такими как списки, кортежи и т. Д. – Forzaa

Смежные вопросы