Tổng / tối đa / tối thiểu của mỗi cột Show sum(A, 1) max(A, [], 1) min(A, [], 1) sum(A, 0) np.amax(A, 0) np.amin(A, 0) sum(A, dims = 1) maximum(A, dims = 1) minimum(A, dims = 1) Tổng / tối đa / tối thiểu của mỗi hàng sum(A, 2) max(A, [], 2) min(A, [], 2) sum(A, 1) np.amax(A, 1) np.amin(A, 1) sum(A, dims = 2) maximum(A, dims = 2) minimum(A, dims = 2) Tổng/tối đa/tối thiểu của toàn bộ ma trận sum(A(:)) max(A(:)) min(A(:)) np.sum(A) np.amax(A) np.amin(A) ________số 8_______ Tổng cộng / tối đa / tối thiểu theo hàng cumsum(A, 1) cummax(A, 1) cummin(A, 1) sum(A, 0) np.amax(A, 0) np.amin(A, 0)0 sum(A, 0) np.amax(A, 0) np.amin(A, 0)1 Tổng cộng / tối đa / tối thiểu theo cột sum(A, 0) np.amax(A, 0) np.amin(A, 0)2 sum(A, 0) np.amax(A, 0) np.amin(A, 0)3 sum(A, 0) np.amax(A, 0) np.amin(A, 0)4 MATLAB® và. NumPy/. SciPy có nhiều điểm chung. Nhưng có nhiều sự khác biệt. NumPy và SciPy được tạo ra để thực hiện tính toán số và khoa học theo cách tự nhiên nhất với Python, không phải là bản sao của MATLAB®. Trang này nhằm mục đích trở thành nơi thu thập kiến thức về sự khác biệt, chủ yếu nhằm mục đích giúp người dùng MATLAB® thành thạo trở thành người dùng NumPy và SciPy thành thạo. NumPyProConPage là một trang khác dành cho những người tò mò đang nghĩ đến việc áp dụng Python với NumPy và SciPy thay vì MATLAB® và muốn xem danh sách ưu và nhược điểm Trong MATLAB®, kiểu dữ liệu cơ bản là một mảng đa chiều gồm các số dấu phẩy động có độ chính xác kép. Hầu hết các biểu thức lấy các mảng như vậy và trả về các mảng đó. Các phép toán trên các phiên bản 2-D của các mảng này được thiết kế để hoạt động ít nhiều giống như các phép toán ma trận trong đại số tuyến tính Trong NumPy, kiểu cơ bản là một mảng nhiều chiều. Các thao tác trên các mảng này ở tất cả các chiều bao gồm cả 2D là các thao tác theo phần tử. Tuy nhiên, có một loại ma trận đặc biệt để làm đại số tuyến tính, nó chỉ là một lớp con của lớp mảng. Các phép toán trên mảng ma trận là các phép toán đại số tuyến tính MATLAB® sử dụng 1 (một) chỉ mục dựa trên. Phần tử ban đầu của một chuỗi được tìm thấy bằng cách sử dụng a(1). Python sử dụng lập chỉ mục dựa trên 0 (không). Phần tử ban đầu của một chuỗi được tìm thấy bằng cách sử dụng [0] Ngôn ngữ kịch bản của MATLAB® được tạo ra để thực hiện đại số tuyến tính. Cú pháp cho các hoạt động ma trận cơ bản là tốt và rõ ràng, nhưng API để thêm GUI và tạo các ứng dụng chính thức ít nhiều là một suy nghĩ sau NumPy dựa trên Python, được thiết kế ngay từ đầu để trở thành ngôn ngữ lập trình đa năng xuất sắc. Mặc dù cú pháp của Matlab cho một số thao tác với mảng nhỏ gọn hơn của NumPy, nhưng NumPy (do là một tiện ích bổ sung cho Python) có thể thực hiện nhiều việc mà Matlab không thể làm được, chẳng hạn như phân lớp con kiểu mảng chính để thực hiện cả phép toán mảng và ma trận một cách rõ ràng Trong MATLAB®, các mảng có ngữ nghĩa truyền theo giá trị, với sơ đồ sao chép khi ghi lười biếng để ngăn việc tạo các bản sao thực sự cho đến khi chúng thực sự cần thiết. Thao tác cắt sao chép các phần của mảng Trong các mảng NumPy có ngữ nghĩa truyền qua tham chiếu. Thao tác lát cắt là các khung nhìn thành một mảng Trong MATLAB®, mọi hàm phải nằm trong một tệp cùng tên và bạn không thể xác định các hàm cục bộ trong tệp tập lệnh thông thường hoặc tại dấu nhắc lệnh (nội tuyến không phải là hàm thực mà là macro, như trong C) Mã NumPy là mã Python, vì vậy nó không có hạn chế như vậy. Bạn có thể xác định chức năng bất cứ nơi nào bạn muốn MATLAB® có một cộng đồng tích cực và có rất nhiều mã miễn phí. Nhưng sức sống của cộng đồng bị giới hạn bởi chi phí của MATLAB®; NumPy/. SciPy cũng có một cộng đồng tích cực, dựa trên trang web này. Nó nhỏ hơn, nhưng nó đang phát triển rất nhanh. Ngược lại, các chương trình Python có thể được phân phối lại và sử dụng tự do. Xem Topical_Software để biết danh sách phần mềm ứng dụng bổ sung miễn phí, Mailing_Lists để thảo luận và phần còn lại của trang web này để biết thêm đóng góp của cộng đồng. Chúng tôi khuyến khích sự tham gia của bạn MATLAB® có một bộ mở rộng các tiện ích bổ sung tùy chọn, dành riêng cho miền ('hộp công cụ') có sẵn để mua, chẳng hạn như để xử lý tín hiệu, tối ưu hóa, hệ thống điều khiển và toàn bộ hệ thống SimuLink® để tạo đồ họa các mô hình hệ thống động Hiện tại không có tương đương trực tiếp với điều này trong thế giới phần mềm tự do, về phạm vi và độ sâu của các tiện ích bổ sung. Tuy nhiên, danh sách trong Topical_Software chắc chắn cho thấy xu hướng ngày càng tăng theo hướng đó MATLAB® có hệ thống đồ thị 2-d và 3-d tinh vi, với các tiện ích giao diện người dùng Phần mềm bổ trợ có thể được sử dụng với Numpy để tạo các biểu đồ có thể so sánh với MATLAB®. Matplotlib là thư viện vẽ sơ đồ 2 chiều hoàn thiện mô phỏng giao diện MATLAB®. PyQwt cho phép giao diện người dùng mạnh hơn và nhanh hơn MATLAB®. Và mlab, API "giống như matlab" dựa trên Mayavi2, để vẽ sơ đồ 3D của mảng Numpy. Xem trang Topical_Software để biết thêm tùy chọn, liên kết và chi tiết. Tuy nhiên, không có giải pháp vẽ đồ thị tích hợp, tất cả trong một, dễ sử dụng, dứt khoát cho 2-d và 3-d. Đây là khu vực mà Numpy/Scipy có thể sử dụng một số công việc MATLAB® cung cấp môi trường phát triển đầy đủ với cửa sổ tương tác lệnh, trình chỉnh sửa tích hợp và trình gỡ lỗi Numpy không có một IDE tiêu chuẩn. Tuy nhiên, môi trường IPython cung cấp một dấu nhắc lệnh tinh vi với đầy đủ hỗ trợ hoàn thành, trợ giúp và gỡ lỗi cũng như giao diện với thư viện Matplotlib để vẽ đồ thị và trình chỉnh sửa Emacs/XEmacs Bản thân MATLAB® có giá hàng nghìn đô la nếu bạn không phải là sinh viên. Mã nguồn của gói chính không có sẵn cho người dùng thông thường. Bạn không thể tự cô lập hay sửa lỗi và các vấn đề về hiệu suất, cũng như không thể trực tiếp tác động đến hướng phát triển trong tương lai. (Tuy nhiên, nếu bạn thực sự thích cú pháp giống Matlab, thì có Octave, một môi trường tính toán số khác cho phép sử dụng hầu hết các cú pháp Matlab mà không cần sửa đổi. ) NumPy và SciPy miễn phí (cả bia và lời nói), dù bạn là ai Câu trả lời ngắnsử dụng mảng
Nhược điểm duy nhất của việc sử dụng kiểu mảng là bạn sẽ phải sử dụng dấu chấm thay vì * để nhân (giảm) hai thang đo (tích vô hướng, phép nhân vectơ ma trận, v.v. ) Câu trả lời dàiNumpy chứa cả lớp mảng và lớp ma trận. Lớp mảng nhằm mục đích trở thành một mảng n chiều có mục đích chung cho nhiều loại tính toán số, trong khi ma trận nhằm tạo điều kiện cụ thể cho các phép tính đại số tuyến tính. Trong thực tế, chỉ có một số khác biệt chính giữa hai
Có những ưu và nhược điểm khi sử dụng cả hai
Do đó, mảng được khuyến khích sử dụng nhiều hơn, nhưng cuối cùng, bạn không thực sự phải chọn cái này hay cái kia. Bạn có thể trộn và kết hợp. Bạn có thể sử dụng mảng cho phần lớn mã của mình và chuyển sang ma trận trong các phần mà bạn có đại số tuyến tính thực chất với nhiều phép nhân ma trận-ma trận Numpy có một số tính năng tạo thuận lợi cho việc sử dụng loại ma trận, hy vọng sẽ giúp mọi việc chuyển đổi Matlab dễ dàng hơn
Bảng dưới đây đưa ra các giá trị tương đương sơ bộ cho một số biểu thức MATLAB® phổ biến. Đây không phải là tương đương chính xác, nhưng nên được coi là gợi ý để giúp bạn đi đúng hướng. Để biết thêm chi tiết, hãy đọc tài liệu tích hợp về các hàm NumPy Cần cẩn thận khi viết các hàm lấy mảng hoặc ma trận làm đối số --- nếu bạn đang mong đợi một mảng và được cung cấp một ma trận hoặc ngược lại, thì '*' (phép nhân) sẽ cho bạn kết quả không mong muốn. Bạn có thể chuyển đổi qua lại giữa các mảng và ma trận bằng cách sử dụng
Tất cả các hàm này đều chấp nhận cả mảng và ma trận (trong số những thứ khác như danh sách Python) và do đó rất hữu ích khi viết các hàm chấp nhận bất kỳ đối tượng giống như mảng nào Trong bảng bên dưới, giả sử rằng bạn đã thực hiện các lệnh sau trong Python from numpy import * import scipy as Sci import scipy.linalg Cũng giả sử bên dưới rằng nếu Ghi chú nói về "ma trận" thì các đối số là các thực thể hạng 2 ĐÂY LÀ TÀI LIỆU WIKI ĐANG PHÁT TRIỂN. Nếu bạn tìm thấy một lỗi, hoặc có thể điền vào một ô trống, xin vui lòng sửa nó. Nếu có thứ gì đó bạn muốn thấy được thêm vào, chỉ cần thêm nó Mục đích chung tương đươngMATLAB cục mịch ghi chú chức năng trợ giúp thông tin (func) hay trợ giúp (func) hay func? nhận trợ giúp về chức năng func chức năng nào () tìm ra nơi chức năng được xác định gõ chức năng nguồn (func) hay func?? nguồn in cho func (nếu không phải là chức năng gốc) một && b A và B toán tử logic AND ngắn mạch (toán tử gốc Python); một. b a hoặc b đoản mạch toán tử logic OR (toán tử gốc Python); 1*i,1*j,1i,1j 1j số phức tập phim khoảng cách(1) Khoảng cách giữa 1 và số dấu phẩy động gần nhất thơ45 scipy. tích hợp. ca ngợi (f). set_integrator('dopri5') tích hợp một ODE với Runge-Kutta 4,5 ode15s scipy. tích hợp. ca ngợi (f). \ tích hợp một ODE với BDF Đại số tuyến tính tương đươngThảm ký hiệu (. ) có nghĩa là sử dụng cùng một biểu thức như mảng, nhưng chuyển đổi thành ma trận bằng trình chuyển đổi kiểu mat() Các ký hiệu asarray (. ) có nghĩa là sử dụng cùng một biểu thức như ma trận, nhưng chuyển đổi thành mảng bằng trình chuyển đổi kiểu asarray() MATLAB cục mịch. mảng cục mịch. ma trận ghi chú ndim(a) ndim(a) hoặc một. đim lấy số thứ nguyên của a (xếp hạng tensor) số(a) kích thước (a) hoặc một. kích thước lấy số phần tử của mảng kích thước (a) hình dạng (a) hoặc một. hình dạng lấy "kích thước" của ma trận kích thước (a, n) a. hình dạng[n-1] lấy số phần tử của chiều thứ n của mảng a. (Lưu ý rằng MATLAB® sử dụng lập chỉ mục dựa trên 1 trong khi Python sử dụng lập chỉ mục dựa trên 0, ) [ 1 2 3; mảng ([[1. ,2. ,3. ], thảm([[1. ,2. ,3. ], Ma trận 2x3 theo nghĩa đen [ a b; vstack([hstack([a,b]), bmat('a b; c d') xây dựng một ma trận từ các khối a, b, c và d một (kết thúc) một[-1] một[. ,-1][0,0] truy cập phần tử cuối cùng trong ma trận 1xn a a(2,5) một[1,4] phần tử truy cập ở hàng thứ hai, cột thứ năm a(2,. ) a[1] hoặc a[1,. ] toàn bộ hàng thứ hai của một một(1. 5,. ) một[0. 5] hoặc một [. 5] hoặc a[0. 5,. ] năm hàng đầu tiên của một a(end-4. kết thúc,. ) một[-5. ] năm hàng cuối cùng của một một(1. 3,5. 9) một[0. 3][. ,4. 9] hàng một đến ba và cột năm đến chín của một. Điều này cho phép truy cập chỉ đọc a([2,4,5],[1,3]) a[ix_([1,3,4],[0,2])] hàng 2,4 và 5 và cột 1 và 3. Điều này cho phép ma trận được sửa đổi và không yêu cầu một lát thông thường một(3. 2. 21,. ) một[ 2. 21. 2,. ] mọi hàng khác của a, bắt đầu từ hàng thứ ba và đi đến hàng thứ hai mươi mốt một(1. 2. kết thúc,. ) một[. 2,. ] mọi hàng khác của a, bắt đầu với hàng đầu tiên một (kết thúc. -1. 1,. ) hoặc flipud(a) một[. -1,. ] a với các hàng theo thứ tự ngược lại một([1. kết thúc 1],. ) một[r_[. len(a),0]] a với bản sao của hàng đầu tiên nối vào cuối a. ' a. chuyển vị() hoặc một. T chuyển vị của một một' a. conj(). chuyển vị() hoặc một. conj(). T a. H chuyển vị liên hợp của một a * b chấm(a,b) a * b nhân ma trận một. * b a * b nhân(a,b) phần tử khôn ngoan nhân a. /b a/b phân chia phần tử khôn ngoan a. ^3 một**3 sức mạnh(a,3) lũy thừa phần tử khôn ngoan (a>0. 5) (a>0. 5) ma trận có phần tử thứ i,j là (a_ij > 0. 5) tìm(a>0. 5) khác không (a>0. 5) tìm các chỉ số trong đó (a > 0. 5) một(. ,tìm(v>0. 5)) một[. ,khác không(v>0. 5)[0]] một[. , khác không (v. MỘT>0. 5)[0]] trích xuất các cột của một trong đó vector v > 0. 5 một(. ,tìm(v>0. 5)) một[. , v. T>0. 5] một[. , v. T>0. 5)] trích xuất các cột của cột trong đó vector v > 0. 5 a(a<0. 5)=0 a[a<0. 5]=0 a với các phần tử nhỏ hơn 0. 5 không ra một. * (a>0. 5) a * (a>0. 5) chiếu (một. A * (a>0. 5). MỘT) a với các phần tử nhỏ hơn 0. 5 không ra một(. ) = 3 một[. ] = 3 đặt tất cả các giá trị thành cùng một giá trị vô hướng y=x y = x. sao chép() numpy gán theo tham chiếu y=x(2,. ) y = x[1,. ]. sao chép() lát numpy là bằng cách tham khảo y=x(. ) y = x. làm phẳng(1) biến mảng thành vectơ (lưu ý rằng điều này buộc phải sao chép) 1. 10 sắp xếp(1. ,11. ) hoặc là mat(arange(1. ,11. )) hoặc là tạo một véc tơ tăng dần 0. 9 sắp xếp (10. ) hoặc là mat (sắp xếp (10. )) hoặc là tạo một véc tơ tăng dần [1. 10]' sắp xếp(1. ,11. )[. , newaxis] r_[1. 11. ,'c'] tạo một vectơ cột số không (3,4) số không((3,4)) chiếu(. ) Mảng 3x4 hạng 2 chứa đầy các số 0 dấu phẩy động 64 bit số không (3,4,5) số không((3,4,5)) chiếu(. ) Mảng 3x4x5 hạng 3 chứa đầy các số 0 dấu phẩy động 64 bit cái(3,4) cái((3,4)) chiếu(. ) Mảng 3x4 hạng 2 có đầy đủ các dấu phẩy động 64 bit mắt(3) mắt(3) chiếu(. ) ma trận nhận dạng 3x3 chẩn đoán (a) chẩn đoán (a) chiếu(. ) vectơ các phần tử đường chéo của a chẩn đoán (a,0) chẩn đoán (a,0) chiếu(. ) ma trận đường chéo vuông có các giá trị khác không là các phần tử của một rand(3,4) ngẫu nhiên. rand(3,4) chiếu(. ) ma trận 3x4 ngẫu nhiên không gian trống (1,3,4) không gian trống (1,3,4) chiếu(. ) 4 mẫu cách đều nhau giữa 1 và 3, bao gồm [x,y]=lưới lưới(0. 8,0. 5) mgrid[0. 9. ,0. 6. ] hoặc là chiếu(. ) hai mảng 2D. một trong các giá trị x, giá trị còn lại của y ogrid[0. 9. ,0. 6. ] hoặc là chiếu(. ) cách tốt nhất để đánh giá các hàm trên lưới [x,y]=lưới lưới([1,2,4],[2,4,5]) lưới([1,2,4],[2,4,5]) chiếu(. ) ix_([1,2,4],[2,4,5]) chiếu(. ) cách tốt nhất để đánh giá các hàm trên lưới repmat(a, m, n) gạch(a, (m, n)) chiếu(. ) tạo m bởi n bản sao của một [ab] nối ((a,b),1) hoặc nối ((a,b),1) nối các cột của a và b [một; nối ((a,b)) hoặc nối ((a,b)) nối các hàng của a và b tối đa(tối đa(a)) a. tối đa() phần tử tối đa của a (với ndims(a)<=2 cho matlab) tối đa (a) a. tối đa (0) phần tử lớn nhất của mỗi cột của ma trận a tối đa(a,[],2) a. tối đa(1) phần tử lớn nhất của mỗi hàng của ma trận a tối đa(a,b) tối đa(a, b) so sánh a và b theo từng phần tử và trả về giá trị lớn nhất từ mỗi cặp định mức(v) sqrt(dấu chấm(v,v)) hoặc sqrt(dấu chấm(v. một, v. A)) hoặc L2 chuẩn của véc tơ v a & b logic_and(a,b) toán tử AND theo từng phần tử (Numpy ufunc) một. b logic_or(a,b) toán tử OR theo từng phần tử (Numpy ufunc) bitand(a,b) a & b toán tử AND theo bit (Python bản địa và Numpy ufunc) bitor(a,b) một. b Toán tử OR theo bit (Python bản địa và Numpy ufunc) vào(a) linalg. vào(a) nghịch đảo của ma trận vuông a pinv(a) linalg. pinv(a) giả nghịch đảo của ma trận a hạng(a) linalg. matrix_rank(a) hạng của ma trận a a\b linalg. giải (a,b) nếu a là hình vuông nghiệm của a x = b với x ba Giải quyết một. x. T = b. T thay nghiệm của x a = b với x [U,S,V]=svd(a) U, S, Vh = linalg. svd(a), V = Vh. T phân rã giá trị đơn lẻ của một chol(a) linalg. cholesky(a). T hệ số cholesky của ma trận (chol(a) trong matlab trả về ma trận tam giác trên, nhưng linalg. cholesky(a) trả về ma trận tam giác thấp hơn) [V,D]=eig(a) D,V = linalg. eig(a) giá trị riêng và vectơ riêng của một [V,D]=eig(a,b) V,D = Khoa học. linalg. eig(a,b) giá trị riêng và vectơ riêng của a, b [V,D]=eigs(a,k) tìm k giá trị riêng và vectơ riêng lớn nhất của a [Q,R,P]=qr(a,0) Q,R = Khoa học. linalg. qr(a) chiếu(. ) phân tách QR [L,U,P]=lu(a) L,U = Khoa học. linalg. lu(a) hoặc chiếu(. ) phân hủy LU (chú ý. P(Matlab) == hoán vị(P(numpy)) ) conjgrad Khoa học. linalg. cg chiếu(. ) Bộ giải gradient liên hợp fft(a) fft(a) chiếu(. ) Biến đổi Fourier của một ifft(a) ifft(a) chiếu(. ) biến đổi Fourier nghịch đảo của một sắp xếp (a) sắp xếp (a) hoặc một. loại() chiếu(. ) sắp xếp ma trận [b,I] = sắp xếp(a,i) Tôi = argsort(a[. ,i]), b=a[I,. ] sắp xếp các hàng của ma trận hồi quy(y,X) linalg. lstsq(X,y) hồi quy đa tuyến thập phân(x, q) Khoa học. dấu hiệu. lấy mẫu lại(x, len(x)/q) downsample với bộ lọc thông thấp duy nhất (a) duy nhất (a) bóp (a) a. vắt kiệt() ma trận con. Việc gán cho một ma trận con có thể được thực hiện với danh sách các chỉ mục bằng cách sử dụng lệnh ix_. e. g. , đối với mảng 2d a, người ta có thể làm. ind=[1,3]; . ix_(ind,ind)]+=100 CỨU GIÚP. Không có tương đương trực tiếp với lệnh which của MATLAB, nhưng các lệnh trợ giúp và nguồn thường sẽ liệt kê tên tệp chứa chức năng. Python cũng có một mô-đun kiểm tra (do import inspect) cung cấp một tệp getfile thường hoạt động LẬP MỤC. MATLAB® sử dụng một chỉ mục dựa trên một, vì vậy phần tử đầu tiên của chuỗi có chỉ mục 1. Python sử dụng lập chỉ mục dựa trên 0, vì vậy phần tử ban đầu của chuỗi có chỉ mục 0. Nhầm lẫn và chiến tranh lửa phát sinh vì mỗi cái đều có ưu điểm và nhược điểm. Lập chỉ mục dựa trên một phù hợp với cách sử dụng ngôn ngữ phổ biến của con người, trong đó phần tử "đầu tiên" của chuỗi có chỉ mục 1. Lập chỉ mục dựa trên số không đơn giản hóa việc lập chỉ mục. Xem thêm một văn bản của prof. tiến sĩ. Edsger Nữ. Dijkstra CÁC DÃY. Trong MATLAB®, 0. 5 có thể được sử dụng làm chỉ mục phạm vi chữ và chỉ số 'lát cắt' (nằm trong dấu ngoặc đơn); . 5 chỉ có thể được sử dụng làm chỉ mục lát cắt (bên trong dấu ngoặc vuông). Do đó, đối tượng r_ hơi kỳ quặc đã được tạo để cho phép numpy có cơ chế xây dựng phạm vi ngắn gọn tương tự. Lưu ý rằng r_ không được gọi giống như hàm hoặc hàm tạo, mà được lập chỉ mục bằng cách sử dụng dấu ngoặc vuông, cho phép sử dụng cú pháp lát cắt của Python trong đối số LOGICOPS. & hoặc là. trong Numpy là bit AND/OR, trong khi ở Matlab & và. logic VÀ/HOẶC. Sự khác biệt phải rõ ràng đối với bất kỳ ai có kinh nghiệm lập trình quan trọng. Cả hai có thể hoạt động giống nhau, nhưng có những khác biệt quan trọng. Nếu bạn đã sử dụng Matlab's & hoặc. toán tử, bạn nên sử dụng Numpy ufuncs logic_and/logical_or. Sự khác biệt đáng chú ý giữa Matlab và Numpy & và. nhà khai thác là
Nếu bạn biết mình có các đối số boolean, bạn có thể sử dụng các toán tử bitwise của Numpy, nhưng hãy cẩn thận với các dấu ngoặc đơn, như thế này. z = (x > 1) & (x < 2). Việc không có các dạng toán tử Numpy của logic_and và logic_or là một hậu quả đáng tiếc trong thiết kế của Python ĐỊNH HÌNH LẠI và LẬP CHỈ MỤC TUYẾN TÍNH. Matlab luôn cho phép truy cập các mảng nhiều chiều bằng cách sử dụng các chỉ số vô hướng hoặc tuyến tính, Numpy thì không. Các chỉ số tuyến tính phổ biến trong các chương trình Matlab, e. g. find() trên ma trận trả về chúng, trong khi tìm thấy của Numpy hoạt động khác. Khi chuyển đổi mã Matlab, trước tiên có thể cần định hình lại ma trận thành chuỗi tuyến tính, thực hiện một số thao tác lập chỉ mục và sau đó định hình lại. Khi định hình lại (thường) tạo ra các chế độ xem trên cùng một bộ lưu trữ, nên có thể thực hiện việc này khá hiệu quả. Lưu ý rằng thứ tự quét được sử dụng bởi định hình lại trong Numpy mặc định là thứ tự 'C', trong khi Matlab sử dụng thứ tự Fortran. Nếu bạn chỉ đơn giản là chuyển đổi sang một chuỗi tuyến tính và ngược lại thì điều này không thành vấn đề. Nhưng nếu bạn đang chuyển đổi định dạng lại từ mã Matlab dựa trên thứ tự quét, thì mã Matlab này. z = định hình lại(x,3,4); . định hình lại(3,4,order='F'). sao chép () trong Numpy Trong MATLAB®, công cụ chính có sẵn cho bạn để tùy chỉnh môi trường là sửa đổi đường dẫn tìm kiếm với vị trí của các chức năng yêu thích của bạn. Bạn có thể đưa các tùy chỉnh đó vào tập lệnh khởi động mà MATLAB sẽ chạy khi khởi động NumPy, hay đúng hơn là Python, có các cơ sở tương tự
Không giống như MATLAB®, nơi mọi thứ trên đường dẫn của bạn có thể được gọi ngay lập tức, với Python, trước tiên bạn cần thực hiện câu lệnh 'nhập' để có thể truy cập các hàm trong một tệp cụ thể Ví dụ: bạn có thể tạo tập lệnh khởi động giống như thế này (Lưu ý. đây chỉ là một ví dụ, không phải là tuyên bố về "các phương pháp hay nhất")
xem http. // toán học. sf. net/ để tham khảo chéo MATLAB®/NumPy khác xem http. //urapiv. báo chí. com cho một dự án mã nguồn mở (URAPIV) cố gắng chuyển từ MATLAB® sang Python (PyPIV http. //nguồnforge. net/projects/pypiv) với SciPy/NumPy Để tạo một môi trường lập trình tương tự như môi trường được trình bày bởi MATLAB®, những điều sau đây rất hữu ích
Một danh sách đầy đủ các công cụ cho công việc khoa học với python có trong liên kết. Topical_Software
Thể loạiCookbook CategoryTemplate CategoryTemplate CategorySách dạy nấu ănSciPyPackages CategoryCategory Làm cách nào để sử dụng MATLAB với Python?Khởi động Công cụ MATLAB cho Python . Khởi động Python® tại dấu nhắc của hệ điều hành nhập matlab. gói công cụ vào phiên Python của bạn Bắt đầu một quy trình MATLAB® mới bằng cách gọi start_matlab. Hàm start_matlab trả về một đối tượng Python eng cho phép bạn truyền dữ liệu và gọi các hàm do MATLAB thực thi Làm cách nào để sử dụng NumPy trong MATLAB?Liên kết trực tiếp tới câu trả lời này . Mở lời nhắc Anaconda (đi kèm với gói). . Thay đổi thư mục thành thư mục chứa tệp thực thi matlab. . Chạy matlab bằng cách chỉ chạy lệnh "matlab" trong dấu nhắc Xác minh bằng cách sử dụng một cái gì đó như "py NumPy có giống với MATLAB không?Mảng NumPy tương đương với cấu trúc dữ liệu mảng cơ bản trong MATLAB . Với mảng NumPy, bạn có thể thực hiện những việc như tích bên trong và bên ngoài, chuyển vị và các phép toán theo phần tử.
NumPy hay MATLAB cái nào nhanh hơn?Trong Python X += Y; . Tuy nhiên, trong MATLAB trên máy của tôi X = X + 2*Y nhanh hơn một chút so với X = X + Y + Y.
. Điểm chính xác |