Bertahan dari MATLAB dan R sebagai Programmer Hardcore [ditutup]

25

Saya suka pemrograman dalam bahasa yang tampaknya diarahkan untuk para programmer hardcore. (Favorit saya adalah Python dan D.) MATLAB diarahkan untuk insinyur dan R diarahkan untuk ahli statistik, dan sepertinya bahasa-bahasa ini dirancang untuk orang-orang yang bukan programmer hardcore dan tidak berpikir seperti programmer hardcore. Saya selalu menemukan mereka agak canggung untuk digunakan, dan sampai batas tertentu saya tidak tahu mengapa. Berikut adalah beberapa masalah yang berhasil saya identifikasi:

  • (Keduanya): Penekanan ekstrem pada vektor dan matriks sejauh tidak ada primitif sejati.
  • (Keduanya): Kesulitan manipulasi string dasar.
  • (Keduanya): Kurang atau canggung dalam mendukung struktur data dasar seperti tabel hash dan "nyata", yaitu tipe-parametrik dan nestable, array.
  • (Keduanya): Mereka sangat, sangat lambat bahkan oleh standar bahasa yang ditafsirkan, kecuali Anda membungkuk ke belakang untuk membuat vektor kode Anda.
  • (Keduanya): Mereka tampaknya tidak dirancang untuk berinteraksi dengan dunia luar. Sebagai contoh, keduanya adalah program yang cukup besar yang membutuhkan waktu cukup lama untuk diluncurkan dan tampaknya tidak dirancang untuk membuat program filter teks sederhana mudah untuk ditulis. Selain itu, kurangnya pemrosesan string yang baik membuat file I / O dalam bentuk apa pun tetapi sangat standar hampir mustahil.
  • (Keduanya): Orientasi objek tampaknya memiliki perasaan yang sangat melesat. Ya, Anda bisa melakukannya, tetapi tidak terasa jauh lebih idiomatis daripada OO dalam C.
  • (Keduanya): Tidak ada cara yang jelas dan sederhana untuk mendapatkan jenis referensi. Tidak ada referensi kelas atau referensi. Misalnya, saya tidak tahu bagaimana Anda menggulung daftar tertaut Anda sendiri dalam salah satu bahasa ini.
  • (MATLAB): Anda tidak dapat menempatkan beberapa fungsi tingkat atas dalam satu file, mendorong fungsi yang sangat panjang dan pengkodean cut-and-paste.
  • (MATLAB): Integer tampaknya tidak ada sebagai tipe kelas satu.
  • (R): Struktur data dasar yang dibangun tampaknya terlalu tinggi dan tidak terdokumentasi dengan baik, dan tampaknya tidak pernah melakukan apa yang saya harapkan mengingat pengalaman saya dengan struktur data yang serupa tetapi tingkat lebih rendah.
  • (R): Dokumentasi tersebar di semua tempat dan hampir mustahil untuk dijelajahi atau dicari. Bahkan D, yang sering mengetuk untuk dokumentasi yang buruk dan masih cukup alpha-ish, jauh lebih baik sejauh yang saya tahu.
  • (R): Setidaknya sejauh yang saya ketahui, tidak ada IDE yang bagus untuk itu. Sekali lagi, bahkan D, bahasa yang cukup alfa-ish dengan komunitas kecil, lebih baik.

Secara umum, saya juga merasa seperti MATLAB dan R dapat dengan mudah digantikan oleh perpustakaan lama biasa dalam bahasa yang lebih umum, jika ada perpustakaan yang cukup komprehensif. Ini terutama benar dalam bahasa tujuan umum yang lebih baru yang mencakup banyak fitur untuk penulis perpustakaan.

Mengapa R dan MATLAB tampak aneh bagi saya? Adakah masalah besar lain yang Anda perhatikan yang mungkin membuat bahasa-bahasa ini terasa aneh bagi para programmer hardcore? Ketika penggunaannya diperlukan, apa saja kiat bertahan hidup yang baik?

Sunting: Saya melihat satu masalah dari beberapa jawaban yang saya dapatkan. Saya memiliki preferensi pribadi yang kuat, ketika saya menganalisis data, untuk memiliki satu skrip yang menggabungkan seluruh pipa. Ini menyiratkan bahwa bahasa tujuan umum perlu digunakan. Saya benci harus menulis skrip untuk "membersihkan" data dan meludahkannya, lalu yang lain untuk membacanya kembali di lingkungan yang sama sekali berbeda, dll. Saya menemukan gesekan menggunakan MATLAB / R untuk beberapa pekerjaan saya dan sepenuhnya bahasa yang berbeda dengan ruang alamat yang sama sekali berbeda dan cara berpikir untuk yang lain menjadi sumber gesekan yang sangat besar. Selain itu, saya tahu ada lapisan lem yang ada, tetapi mereka selalu tampak sangat rumit dan sumber gesekan.

dsimcha
sumber
40
python ditulis untuk programmer "hardcore" sekarang? kapan itu terjadi?
TZHX
3
@ TZHX: Ok, jadi mungkin hardcore adalah kata yang salah. Ungkapan yang lebih baik adalah "orang yang programmer dan berpikir seperti programmer."
dsimcha
17
Saya sangat tidak suka istilah "programmer hardcore". Kedengarannya seperti semacam elitisme, dan istilah "programmer tujuan umum" akan cukup untuk membuat poin yang sama.
blubb
5
Anda mengeluh bahwa R dan Matlab bukan untuk programmer yang keras, tetapi keluhan Anda tampaknya karena Anda tidak cukup hardcore untuk menggunakan R dan Matlab. Jika Anda ingin menulis dalam bahasa yang bukan berasal dari keluarga Algol, Anda harus memikirkan istilah-istilahnya.
Peter Taylor
5
Astaga, bahasa pemrograman kedua saya adalah Assembly. Bukan inti keras Python - itu pada tingkat yang persis sama dengan R dan Matlab. Mengasumsikan perbedaannya adalah tidak memahami banyak hal selain Python ... Python fantastis untuk pemrograman tujuan umum. Matlab sangat bagus karena banyak hal yang membuat Mathworks mudah. R hebat karena statistik yang tak tertandingi, pembelajaran mesin, persiapan data, analisis, dan alat visualisasi yang tersedia (alias statistik). Bagus b / c Perl ... Lakukan saja seperti yang saya lakukan - pelajari semuanya dan pilih yang tepat untuk pekerjaan itu. :)
Iterator

Jawaban:

29

Mungkin ide yang buruk untuk mendekati bahasa-bahasa khusus domain dengan pola pikir yang diperlukan untuk pemrograman pada umumnya, atau untuk pemrograman program umum dengan bahasa tujuan umum. Menjadi spesifik domain, mereka kemungkinan akan membutuhkan kurva belajar yang lebih curam dan pola pikir yang tidak nyaman agar digunakan paling efisien. Saya menganggap menulis kode dalam Matlab setara dengan menulis kode khusus domain yang sangat dioptimalkan (setara dengan, misalnya, menulis kode OpenGL yang efisien dan bersih). Saya juga melihat mereka bergerak semakin ke arah menjadi berguna sebagai perpustakaan untuk digunakan dalam bahasa lain - lihat, misalnya, http://www.mathworks.com/matlabcentral/fileexchange/12987-integrating-matlab-with-c

Saya akan mengatakan, gunakan proses yang sama untuk DSL ini seperti yang Anda lakukan untuk orang lain:

  • Pilih dengan hati-hati masalah yang Anda selesaikan menggunakan Matlab atau R, untuk memastikan bahwa mereka adalah jenis masalah yang paling tepat untuk mereka selesaikan. Misalnya, gunakan Matlab untuk memanipulasi vektor Anda, dan bukan untuk sisa pekerjaan Anda, jika Anda bisa menghindarinya
  • Secara umum, campur / cocokkan solusi untuk membatasi bagian yang Anda program di Matlab atau R untuk subset yang tepat dari masalah yang mereka dibangun untuk menangani.
  • Ikuti pola pikir pengguna pada domain tempat bahasa tersebut dibuat, ketika merancang dan membangun solusi Anda - sesuaikan sikap vektor-matematika terhadap dunia sebelum mulai bekerja pada program Matlab, misalnya; mungkin menulis karya Anda di atas kertas, menggunakan notasi matematika standar, pertama
  • Lakukan pekerjaan ekstra yang diperlukan untuk membangun lingkungan kerja yang nyaman bagi diri Anda, dan dapatkan alat yang diperlukan untuk melakukan pekerjaan itu, meskipun berbeda dari standar untuk DSL. Jika Anda seorang pengguna emacs, misalnya, pertimbangkan untuk menggunakan mode matlab untuk emacs untuk melakukan pekerjaan Anda; pastikan itu berfungsi serta mode yang telah Anda tetapkan untuk bahasa lain
  • Bersiaplah untuk keluar. Terutama jika Anda harus sering kembali ke bahasa tersebut, pastikan untuk membangun sendiri ekosistem yang andal di mana pekerjaan yang Anda lakukan dalam DSL terkandung hanya untuk pekerjaan khusus domain, dan semudah mungkin untuk beralih ke bahasa lain untuk sisa pekerjaan Anda. Ingatkan diri Anda, lebih sering daripada biasanya, untuk mencari cara melakukan pekerjaan khusus non-DSL di sistem lain
blueberryfields
sumber
3
Apa yang Anda katakan masuk akal dan biasanya bagaimana saya melakukan sesuatu ketika saya harus menggunakan Matlab atau R. Bagian yang membuat frustrasi dari ini adalah gesekan yang disebabkan oleh harus mengintegrasikan beberapa bahasa dengan berbagai cara dalam melakukan sesuatu dan beberapa ruang alamat. Biasanya, ini melibatkan membuang hal-hal ke file teks pada titik yang tampaknya sewenang-wenang dan membacanya kembali, atau menggunakan beberapa, rapuh, jelek, sulit untuk mengkonfigurasi lapisan lem.
dsimcha
25

Saya akan mengawali ini dengan mencatat bahwa saya akrab dengan MATLAB, tetapi tidak R.

Alasan MATLAB tidak bekerja dengan baik dengan OO, pemrosesan string, atau struktur data khusus adalah bahwa itu tidak dimaksudkan untuk melakukan hal-hal itu. Ada banyak bahasa untuk OO, banyak yang melakukan pekerjaan dengan baik dengan pemrosesan string, dan banyak lagi yang mendukung tipe data kustom gila. Tidak ada dari mereka yang bagus dalam perkalian matriks, karena mereka tidak dirancang untuk itu

Hanya mengoptimalkan operasi vektor dan matriks yang dilakukan MATLAB cukup sulit tanpa berurusan dengan tipe atau pointer yang ditentukan pengguna atau apa yang tidak (jika tidak sulit, mereka tidak akan dapat membebani biaya terlalu banyak untuk itu). Menambahkan dukungan vektor cepat ke bahasa tujuan umum yang ada juga sulit dilakukan --- itu menambahkan overhead besar untuk fitur yang beberapa programmer akan pernah menggunakan (terlalu sedikit programmer memahami daftar terkait, bagaimana mereka diharapkan untuk menggunakan dekomposisi nilai eigen? ).

MATLAB sangat asing bagi Anda karena dirancang untuk memungkinkan para ilmuwan dan insinyur melakukan perkalian matriks dan perhitungan ODE dengan sangat cepat. MATLAB tidak sesuai dengan definisi Anda tentang bahasa "hardcore" karena tidak pernah seharusnya. Mencoba untuk berpikir tentang MATLAB dalam hal Python atau D seperti mencoba untuk berpikir tentang LISP atau Haskell dalam hal C atau tentang Verilog dan VHDL dalam hal JavaScript --- mereka memecahkan masalah yang berbeda dan mendekati pemecahan masalah dengan cara yang sangat berbeda. Agar adil, MATLAB membuat beberapa (aneh, banyak) pilihan desain bahasa yang aneh yang saya tidak bisa membungkus kepala saya, bahkan dari perspektif bahasa khusus domain. Tetapi tidak ada alasan khusus mengapa seorang astronom harus peduli bahwa benda langit X persis 48 AU dari benda langit Y dibandingkan dengan 48,0 AU.

Sekarang, untungnya, beberapa perpustakaan datang ke lokasi yang melakukan persis seperti yang Anda sarankan: dukungan yang baik untuk perhitungan ilmiah dalam bahasa tujuan umum. Untuk Python, ada NumPy / Matplotlib yang memiliki beberapa tepi kasar tetapi menyediakan fungsionalitas MATLAB yang wajar di dalam Python. Alasan belum ada proyek lain seperti ini adalah bahwa perpustakaan sangat sulit untuk menulis dan melayani pasar yang sudah dicakup oleh MATLAB dan FORTRAN.

Jika Anda benar-benar harus menggunakan MATLAB atau R, Anda tidak dapat mendekati pemrograman di dalamnya seperti programmer "hardcore", Anda harus mendekatinya seperti ilmuwan atau insinyur "hardcore". Untuk LISP, Anda harus berpikir dalam rekursi. Di MATLAB, Anda hanya perlu berpikir dalam matriks. Memoles aljabar linier ( kuliah MIT tentang topik ini adalah ulasan yang bagus). Kalau tidak, satu-satunya cara untuk "bertahan" MATLAB adalah dengan praktik untuk mengenali kapan loop dapat diganti dengan operasi vektor atau ketika masalah Anda berkurang untuk menemukan nilai eigen dari produk luar.

Hoa Long Tam
sumber
Ya, secara keseluruhan saya suka Numpy / Scipy / Matplotlib dan menggunakannya kapan saja alternatif yang jelas adalah MATLAB / R. Satu-satunya keluhan saya tentang ini adalah bahwa mereka tidak sedalam MATLAB / R dan bahwa, karena mereka Python, mereka masih agak lambat.
dsimcha
4
@dsimcha, ini sebenarnya tidak benar . Dalam studi kinerja ini, Numpy setara dengan MATLAB, dan Pyrex berada dalam faktor 2 dari C ++.
wvoq
@wvoq: Klarifikasi: Maksud saya interpreter Python lambat, bukan Numpy. Saya tahu Numpy sebagian besar adalah pembungkus untuk BLAS dan LAPACK, yang cepat. Tentu saja masih ada overhead tetap memanggil kode ini. Saya juga mengetahui Pyrex, Cython, dll, dan mereka memang membantu, tetapi Anda masih mencampuradukkan bahasa pada level yang sangat bagus dan ini masih bisa menjadi sumber gesekan.
dsimcha
2
@dsimcha, Biaya panggilan Numpy bisa dibilang konstan. Dalam studi kinerja yang saya sebutkan, Anda mendapatkan sepersepuluh detik dengan C ++. Waktu itu harus dibandingkan dengan waktu yang dihabiskan untuk menulis dan debugging, dan debugging panggilan BLAS pada saat itu. Mungkin instruktif untuk bertanya mengapa tidak menulis semuanya dalam pertemuan? Atau bahkan kode mesin lurus, karena konversi dari kode perakitan ke kode mesin menambahkan beberapa overhead tetap?
wvoq
3
@dsimcha Hah? Anda ingin melakukan segalanya dalam satu bahasa (cepat), Anda paling menyukai Python dan kemudian Anda mengeluh tentang Python yang lambat? Jadi apa intinya. Saya kira Anda hanya ingin MATLAB memiliki fitur tujuan yang lebih umum dan lebih cepat daripada bahasa yang ditafsirkan?
Chris berkata Reinstate Monica
14

Penggunaan berulang Anda atas istilah "programmer hardcore" mengacu pada diri Anda sendiri. bersama dengan sindiran Anda bahwa perancang R dan MATLAB tidak , menurut saya sangat konyol dan mendorong orang untuk tidak menganggap kritik Anda serius.

Jika Anda ingin membaca beberapa kritik serius terhadap R, Anda sebaiknya membaca bagian ini oleh Ross Ihaka, salah satu desainer R. Sepertinya inti yang lebih sulit bagi saya untuk merancang R daripada menggunakan D atau Python.

wvoq
sumber
2
-1. Saya tidak pernah bermaksud untuk menyiratkan bahwa perancang MATLAB dan R adalah hal lain selain programmer yang sangat bagus dan hardcore. Namun, MATLAB dan R tidak dirancang untuk programmer hardcore.
dsimcha
3
"... sepertinya bahasa-bahasa ini dirancang oleh orang-orang yang bukan programmer hardcore dan tidak berpikir seperti programmer hardcore."
wvoq
6
Anda masih belum menjelaskan apa itu "programmer hardcore". Dengan contoh Anda, "hardcore" terdengar seperti itu hanya berarti "paling nyaman dengan C ++", dalam hal ini R dan MATLAB tidak akan menjadi hardcore menurut definisi. Hampir semua contoh Anda mengurangi keluhan bahwa bahasa-bahasa ini bukan seperti yang biasa Anda alami, tanpa bertanya mengapa para pakar di bidang ini merasa cocok untuk mengimplementasikannya dengan cara itu.
wvoq
1
Juga, dalam hal definisi, saya pikir itu sudah jelas, tetapi "programmer hardcore" hanyalah seseorang yang nyaman dengan konsep pemrograman dasar seperti referensi / petunjuk, orientasi objek, fungsi lambda, struktur data dasar, dll. Dan digunakan untuk mengembangkan dalam bahasa tujuan umum.
dsimcha
2
Yah pertama-tama, "hardcore" adalah istilah yang cukup dimuat jika dimaksudkan untuk menunjukkan "seseorang yang fasih dengan konsep dasar dalam pemrograman oo / prosedural / fungsional". Kedua, saya tidak bisa berbicara untuk MATLAB, tetapi R memiliki semua hal ini. Satu-satunya perbedaan adalah bahwa dalam R Anda didorong oleh bahasa untuk menyelesaikan masalah Anda sedemikian rupa sehingga unsur-unsur kosakata statistik menjadi primitif Anda. Alasan untuk ini adalah bahwa ahli statistik dan pekerja pembelajaran mesin sering bekerja dengan masalah yang dengan mudah diungkapkan dengan cara ini, yang membuat R cocok secara alami bahkan jika Anda merasa nyaman dengan hal-hal "inti yang lebih keras".
wvoq
9

Penekanan ekstrem pada vektor dan matriks sampai-sampai tidak ada primitif sejati.

Itu tergantung apa yang Anda sebut primitif sejati. Dalam R, vektor adalah primitif sejati; yaitu, semua variabel adalah vektor. Demikian juga, dalam MATLAB semua variabel adalah matriks.

Kesulitan manipulasi string dasar.

Dalam MATLAB, manipulasi string sangat kuat tetapi saya setuju bahwa kode tersebut sering jelek dan tidak intuitif (setidaknya untuk saat ini). Untuk R, ada stringrpaketnya, yang sama bagusnya dengan alat dalam bahasa lain.

Kurang atau canggung dalam mendukung struktur data dasar seperti tabel hash dan "nyata", yaitu tipe-parametrik dan nestable, array.

Di R, vektor memiliki nama yang berfungsi seperti hash. Ada juga paket hashdan filehash. Tidak yakin tentang implementasi MATLAB, tetapi Anda dapat memanggil versi JAVA atau .NET dengan mudah jika Anda mau.

Mereka sangat, sangat lambat bahkan oleh standar bahasa yang ditafsirkan, kecuali Anda membungkuk ke belakang untuk membuat vektor kode Anda.

Setelah Anda terbiasa dengan vektorisasi (saya yakin Anda akan melakukannya, jika Anda benar-benar hardcore) Anda akan mengutuk harus menggunakan loop ketika Anda kembali ke bahasa lain. Kecepatan eksekusi adalah tradeoff untuk kecepatan pemrograman.

Mereka tampaknya tidak dirancang untuk berinteraksi dengan dunia luar. Sebagai contoh, keduanya adalah program yang cukup besar yang membutuhkan waktu cukup lama untuk diluncurkan dan tampaknya tidak dirancang untuk membuat program filter teks sederhana mudah untuk ditulis. Selain itu, kurangnya pemrosesan string yang baik membuat file I / O dalam bentuk apa pun tetapi sangat standar hampir mustahil.

Mereka berdua dapat membaca dan menulis data dalam format apa pun. Keduanya dapat dipanggil dari sebagian besar bahasa pemrograman lainnya. Atau dari prompt perintah. Anda dapat membuat GUI dengan mereka. Bagaimana itu tidak berinteraksi dengan dunia luar? Jika Anda kesulitan dengan program filter teks Anda, tanyakan pada stackoverflow.

Orientasi objek tampaknya memiliki perasaan yang sangat melesat. Ya, Anda bisa melakukannya, tetapi tidak terasa jauh lebih idiomatis daripada OO dalam C.

Sepakat; mereka terutama bahasa prosedural.

Tidak ada cara yang jelas dan sederhana untuk mendapatkan jenis referensi. Tidak ada referensi kelas atau referensi. Misalnya, saya tidak tahu bagaimana Anda menggulung daftar tertaut Anda sendiri dalam salah satu bahasa ini.

Disetujui dalam R. Dalam MATLAB, referensi disebut pegangan.

Anda tidak dapat menempatkan beberapa fungsi tingkat atas dalam satu file, mendorong fungsi yang sangat panjang dan memotong-dan-menempelkan koding.

Omong kosong. Cukup buat beberapa file.

Bilangan bulat tampaknya tidak ada sebagai tipe kelas satu.

Mereka melakukannya. Lihat int8, int16, int32dan int64.

Struktur data built-in dasar tampaknya tingkat terlalu tinggi dan kurang didokumentasikan, dan tampaknya tidak pernah melakukan apa yang saya harapkan mengingat pengalaman saya dengan struktur data tingkat yang sama tetapi lebih rendah.

Mereka cocok untuk melakukan analisis data. Tolong beri contoh spesifik perilaku yang tidak terduga.

Dokumentasi tersebar di semua tempat dan hampir mustahil untuk dijelajahi atau dicari. Bahkan D, yang sering mengetuk untuk dokumentasi yang buruk dan masih cukup alpha-ish, jauh lebih baik sejauh yang saya tahu.

Ada banyak jenis dokumentasi. Mulailah dengan ?some_function, RSiteSearch('some concept'), rseek.org , dan sospaket. Belum lagi manual yang datang dengan instalasi. Atau buku yang bagus .

Setidaknya sejauh yang saya ketahui, tidak ada IDE yang bagus untuk itu. Sekali lagi, bahkan D, bahasa yang cukup alfa-ish dengan komunitas kecil, lebih baik.

Coba Arsitek atau RStudio atau IDE Analytics Revolusi. Lihat bagian "IDE dan editor untuk R" pada halaman info Stack Overflow untuk tautan dan lebih banyak opsi.

Richie Cotton
sumber
3

MATLAB dapat berintegrasi dengan Java dan C / C ++. Anda dapat menerapkan semua beban kerja non-numerik Anda dalam bahasa-bahasa ini, dan memintanya dari MATLAB.

penggunaannya perlu

Apakah ada alasan mengapa itu perlu? Apakah Anda mengerjakan basis kode MATLAB yang ada yang ditulis oleh orang lain? Apakah ini persyaratan kerja? (atau persyaratan kelas jika Anda di sekolah) Jika tidak, Anda dapat menggunakan SciPy atau NumPy sebagai gantinya.

Sayangnya, menurut pendapat pribadi saya, jika situasi ini dipaksakan pada seseorang, itu tidak selalu bisa bertahan. Bahkan di perguruan tinggi, tidak semua mahasiswa teknik dapat terbiasa dengan cara berpikir komputasi MATLAB.

rwong
sumber
2
Saya menyadari solusi ini, tetapi mereka tampaknya terbelakang. Saya ingin memanggil MATLAB dari C ++, Java, dll., Bukan sebaliknya. Saya ingin sesuatu selain MATLAB menjadi bahasa "pengemudi" saya.
dsimcha
2
@dsimcha Anda dapat memanggil perpustakaan MATLAB dan R dari C. Lihat mathworks.com/help/techdoc/matlab_external/f38569.html atau math.univ-montp2.fr/~pudlo/R_files/call_R.pdf
Charles E. Grant
0

Saya bekerja dengan MATLAB, Python dan C (dan kadang-kadang C ++), dan saya menganggap diri saya (terutama) pengembang perangkat lunak, duduk di hadapan rekan kerja yang cenderung ilmuwan data, ahli matematika, atau spesialis domain lainnya.

Walaupun saya akan menjadi orang pertama yang mengakui bahwa itu bukan bahasa pemrograman untuk tujuan umum dalam arti C atau Python, saya sebenarnya sangat suka menulis skrip dalam MATLAB, terutama untuk hal-hal seperti analisis deret waktu atau pemrosesan gambar.

Ada beberapa fitur bahasa yang, meskipun secara umum diimplementasikan dengan sangat tidak efisien, adalah sukacita untuk digunakan. Misalnya, ambil pengindeksan logis: Saya dapat membuat vektor atau matriks logis yang memilih kawasan yang menarik, dan beri nama "isInROI", melakukan operasi filter untuk memilih elemen dari vektor atau matriks "data" di wilayah tersebut. maka cukup masalah penulisan: "roiData = data (isInROI)".

Saat-saat seperti inilah yang benar-benar membuat saya menghargai MATLAB, dan memungkinkan saya mengabaikan dosa-dosanya yang lain, banyak dan banyak dibahas.

William Payne
sumber
Perhatikan bahwa numpy juga memiliki pengindeksan logis: docs.scipy.org/doc/numpy/user/…
jarondl