2011-10-10 39 views
53

tôi có một danh sách 2D cái gì đó nhưlàm thế nào để chuyển đổi danh sách 2d thành mảng 2d?

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

và tôi muốn chuyển nó sang một mảng NumPy 2d. Chúng tôi có thể làm điều đó mà không cần phân bổ bộ nhớ như

numpy.zeros((3,3)) 

và sau đó lưu trữ giá trị cho bộ nhớ đó?

+0

@Donkopotamus, Đó là một sai lầm của tôi ... Tôi đã đưa ra một chuỗi ... Tôi đã làm như vậy nhưng nhận được lỗi. Sau khi tôi nhận được cùng một mã từ đây tôi đã kiểm tra nơi prob là ... Vì vậy, nó giúp ... offcourse tôi kiểm tra các tài liệu trước khi gửi bài ở đây ... Cảm ơn lời nhắc nhở thân thiện. – Shan

Trả lời

63

Chỉ cần vượt qua danh sách để np.array:

a = np.array(a) 

Bạn cũng có thể tận dụng cơ hội này để thiết lập dtype nếu mặc định không phải là những gì bạn mong muốn.

a = np.array(a, dtype=...) 
+31

giải pháp này không hoạt động. bạn sẽ nhận được một loạt các danh sách python. – user1816847

+16

@ user1816847 Điều đó chỉ xảy ra khi danh sách 'phụ' khác nhau về độ dài (ví dụ: [[1,2], [1,2], [1,2,3]]. Nó hoạt động với ví dụ được đưa ra trong câu hỏi – compie

+1

Nếu các mảng phụ không có cùng độ dài, giải pháp này sẽ chỉ cung cấp cho bạn một danh sách các danh sách (ví dụ: các danh sách bên trong sẽ không được chuyển đổi thành các mảng có nhiều mảng) Điều đó hoàn toàn có ý nghĩa như bạn không thể có Mảng 2D (ma trận) với thứ nguyên biến 2. – AHA

1

Tôi đang sử dụng tập dữ liệu lớn xuất khẩu sang một file python theo hình thức

XVals1 = [.........] 
XVals2 = [.........] 

Mỗi danh sách có độ dài giống hệt nhau. Tôi sử dụng

>>> a1 = np.array(SV.XVals1) 

>>> a2 = np.array(SV.XVals2) 

Sau đó

>>> A = np.matrix([a1,a2]) 
0

np.array() thậm chí còn mạnh hơn so với những gì unutbu nói ở trên. Bạn cũng có thể sử dụng nó để chuyển đổi một danh sách các mảng np vào một mảng dimention cao hơn, sau đây là một ví dụ đơn giản:

aArray=np.array([1,1,1]) 

bArray=np.array([2,2,2]) 

aList=[aArray, bArray] 

xArray=np.array(aList) 

hình xArray là (2,3), đó là một mảng np chuẩn. Thao tác này tránh lập trình vòng lặp.

1

chỉ cần sử dụng đoạn mã sau

c = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
matrix([[1, 2, 3], 
    [4, 5, 6], 
    [7, 8, 9]]) 

Sau đó, nó sẽ cung cấp cho bạn

bạn có thể kiểm tra hình dạng và kích thước của ma trận bằng cách sử dụng đoạn mã sau

c.shape

c.ndim

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