2013-04-26 59 views
12

Tôi có một mảng Python đơn giản, một chiều với các số ngẫu nhiên. Những gì tôi muốn làm là chuyển đổi nó thành một Ma trận sần sùi của một hình dạng cụ thể. nỗ lực hiện tại của tôi trông như thế này:Chuyển đổi mảng 1D thành ma trận khối u

randomWeights = [] 
for i in range(80): 
    randomWeights.append(random.uniform(-1, 1)) 
W = np.mat(randomWeights) 
W.reshape(8,10) 

Đáng tiếc là nó luôn luôn tạo ra một ma trận có dạng:

[[random1, random2, random3, ...]]

Vì vậy, chỉ phần tử đầu tiên của một thứ nguyên được sử dụng và lệnh định lại lại không có hiệu lực. Có cách nào để chuyển đổi mảng 1D thành ma trận sao cho các mục x đầu tiên sẽ là hàng 1 của ma trận, các mục x tiếp theo sẽ là hàng 2 và tiếp tục không?

Về cơ bản đây sẽ là hình dự kiến:

[[1, 2, 3, 4, 5, 6, 7, 8], 
[9, 10, 11, ... , 16], 
[...,    800]] 

Tôi cho rằng tôi luôn có thể xây dựng một ma trận mới theo hình thức mong muốn bằng tay bằng cách phân tích thông qua các mảng đầu vào. Nhưng tôi muốn biết nếu có một giải pháp đơn giản hơn, tinh tế hơn với các chức năng tích hợp mà tôi không thấy. Nếu tôi phải xây dựng các ma trận đó theo cách thủ công, tôi sẽ có thêm một tấn công việc trong các vùng khác của mã vì tất cả các dữ liệu nguồn của tôi đều nằm trong các mảng 1D đơn giản nhưng sẽ được tính như ma trận.

Trả lời

18

reshape() không định hình lại tại chỗ, bạn cần phải gán kết quả:

>>> W = W.reshape(8,10) 
>>> W.shape 
(8,10)  
Các vấn đề liên quan