Gặp lỗi khi dùng hàm np.concatenate trong numpy

Xin chào mọi người, em đang muốn kết hợp 2 ma trận lại với nhau bằng hàm concatenate. Em ví dụ với ma trận (3x2) như sau:
a = np.array([[1], [2], [3]])
b = np.array([[4], [5], [6]])
Xuất ra kết quả:
[[1 4]
[2 5]
[3 6]]
Giả sử X là ma trận có kích thước là: (mx2)
Code của em như sau:

def mapFeature(X1, X2):
    degree = 6
    out = np.ones((X1.shape[0], 1))
    for i in range(degree):
        for j in range(i):
            out = np.concatenate((out, np.multiply(np.power(X1, i - j), np.power(X2, j))), axis = 1)
    return out
print(mapFeature(X[:, 0], X[:, 1]))

Nó báo bị lỗi thế này:


Em thử thay đổi hàm

out  = np.ones((X1.shape[0]))

Thì nó lại báo lỗi là: axis 1 is out of bounds for array of dimension 1
Mục tiêu của hàm là viết hàm map feature thỏa mãn, tạo ra X có 28 feature (bậc 6):


Mọi người xem giúp em và chỉ em sao ma trận trong python lại có dạng (n, ) được nhỉ ? Xin cảm ơn mọi người nhiều ạ.

(n,) là tuple có 1 phần tử. Nếu không có dấu phẩy thì chỉ là n thôi.

2 Likes

À, vậy thì ra nó chính là mảng 1 chiều có n phần tử. :v cảm ơn anh ạ.
Em mới sửa lại thế này:

out = mapFeature(X[:, 0].reshape(-1, 1), X[:, 1].reshape(-1, 1))
print(out.shape)

và nó đã ổn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?