Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cbind (R function) equivalent in numpy

Here's the behavior I want:

import numpy as np
x = np.array([[1,2],[3,4]])
y = np.array([5, 6])
cbind(x,y) # desired result: np.array([[1,2,5],[3,4,6]])

Seems like it should be easy, but the options I found on http://mathesaurus.sourceforge.net/r-numpy.html (concatenate, hstack, etc.) don't work, e.g.:

np.hstack((x,y))

gives

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "X/site-packages/numpy/core/shape_base.py", line 288, in hstack
    return _nx.concatenate(arrs, 1)
ValueError: all the input arrays must have same number of dimensions
like image 692
stackoverflax Avatar asked May 14 '17 07:05

stackoverflax


2 Answers

More googling found the following answer https://stackoverflow.com/a/8505658/1890660:

np.c_[x,y]

gives

array([[1, 2, 5],
   [3, 4, 6]])

I'll leave it to the StackOverflow stylistas to decide whether I should delete this entire question as a duplicate.

like image 176
stackoverflax Avatar answered Sep 21 '22 11:09

stackoverflax


Using Column Stack will do the trick:

https://numpy.org/doc/stable/reference/generated/numpy.column_stack.html

Example: this will cbind the two 4 X 1 vector together

a = np.random.randn(4,1)
b = np.random.randn(4,1)
np.column_stack((a,b))
like image 35
hao Avatar answered Sep 22 '22 11:09

hao