2015-05-18 18 views
9

Tôi đang cố gắng nối 4 mảng, một mảng 1D hình dạng (78427) và 3 mảng 2D hình dạng (78427, 375/81/103). Về cơ bản đây là 4 mảng với các tính năng cho hình ảnh 78427, trong đó mảng 1D chỉ có 1 giá trị cho mỗi hình ảnh.Kết nối các mảng 2D với mảng 1D

tôi đã cố gắng concatenating các mảng thể như sau:

>>> print X_Cscores.shape 
(78427, 375) 
>>> print X_Mscores.shape 
(78427, 81) 
>>> print X_Tscores.shape 
(78427, 103) 
>>> print X_Yscores.shape 
(78427,) 
>>> np.concatenate((X_Cscores, X_Mscores, X_Tscores, X_Yscores), axis=1) 

Điều này dẫn đến các lỗi sau:

Traceback (most recent call last): File "", line 1, in ValueError: all the input arrays must have same number of dimensions

Vấn đề có vẻ là mảng 1D, nhưng tôi thực sự không thể hiểu tại sao (nó cũng có giá trị 78427). Tôi đã cố gắng để chuyển đổi mảng 1D trước khi ghép nó, nhưng điều đó cũng không hoạt động.

Bất kỳ trợ giúp nào về phương pháp phù hợp để ghép các mảng này sẽ được đánh giá cao!

Trả lời

10

Thử ghép nối X_Yscores[:, None] (hoặc A[:, np.newaxis] như imaluengo gợi ý). Điều này tạo ra một mảng 2D trong một mảng 1D.

Ví dụ:

A = np.array([1, 2, 3]) 
print A.shape 
print A[:, None].shape 

Output:

(3,) 
(3,1) 
+3

Chỉ cần chỉ ra rằng 'A [:, np.newaxis] 'có cùng hành vi so với' A [:, None] 'và đôi khi có thể trực quan hơn (thực sự là' np.newaxis == None'). –

+0

tuy nhiên điều này chỉ đúng nếu cả hai đều có cùng một thứ nguyên. Trong hầu hết các trường hợp, tôi kết thúc với Array A có hình dạng (8400,) và Array B có hình dạng (8399, 21). Làm cách nào để cắt bớt/xóa một vài hàng cuối cùng của A sao cho cả A và B có cùng hình dạng như (8399,) và (8399, 21). Xin cho biết. –

2

Tôi không chắc chắn nếu bạn muốn một cái gì đó như:

a = np.array([ [1,2],[3,4] ]) 
b = np.array([ 5,6 ]) 

c = a.ravel() 
con = np.concatenate((c,b)) 

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

HOẶC

np.column_stack((a,b)) 

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

np.row_stack((a,b)) 

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

bất kỳ suy nghĩ nào về điều này: https://stackoverflow.com/questions/48676461/concatenate-combine-mx1-numpy-array-with-mxn-numpy-array –

2

Bạn có thể thử một-liner:

concat = numpy.hstack([a.reshape(dim,-1) for a in [Cscores, Mscores, Tscores, Yscores]]) 

Những "bí mật" ở đây là để định hình lại bằng cách sử dụng biết đến, kích thước phổ biến ở một trục, và -1 cho người khác, và nó tự động phù hợp với kích thước (tạo một trục mới nếu cần).

+0

Có thể trợ giúp tại đây: https://stackoverflow.com/questions/ 48676461/concatenate-kết hợp-mx1-numpy-mảng-với-mxn-numpy-mảng –

Các vấn đề liên quan