Jadual Kandungan
1. Penggunaan memori yang lebih kecil
64 + 8 * len(lst) + len(lst) * 28 bait
96 + len(a) * 8 bait
2. Kaedah pengiraan terbina dalam yang lebih pantas
Rumah pembangunan bahagian belakang Tutorial Python Mengapakah data besar Python mesti menggunakan Numpy Array?

Mengapakah data besar Python mesti menggunakan Numpy Array?

May 04, 2023 pm 03:13 PM
python data besar numpy arra

Python大数据为啥一定要用Numpy Array?

Numpy ialah modul teras pengkomputeran saintifik Python. Ia menyediakan objek tatasusunan yang sangat cekap, serta alat untuk bekerja dengan objek tatasusunan ini. Tatasusunan Numpy terdiri daripada banyak nilai, semuanya daripada jenis yang sama.

Pustaka teras Python menyediakan senarai Senarai. Senarai ialah salah satu jenis data Python yang paling biasa, dan ia boleh diubah saiz dan mengandungi unsur jenis yang berbeza, yang sangat mudah.

Jadi apakah perbezaan antara List dan Numpy Array? Mengapa kita perlu menggunakan Numpy Array semasa memproses data besar? Jawapannya ialah prestasi.

Struktur data Numpy berprestasi lebih baik dalam aspek berikut:

1. Saiz memori - Struktur data Numpy menduduki kurang memori.

2. Prestasi—Lapisan bawah Numpy dilaksanakan dalam bahasa C, yang lebih pantas daripada senarai.

3. Kaedah pengendalian - operasi algebra teroptimum terbina dalam dan kaedah lain.

Berikut akan menerangkan kelebihan tatasusunan Numpy berbanding Senarai dalam pemprosesan data besar.

1. Penggunaan memori yang lebih kecil

Dengan menggunakan tatasusunan Numpy dan bukannya Senarai, anda boleh mengurangkan penggunaan memori anda sebanyak 20 kali.

Untuk Senarai asli Python, kerana setiap kali objek baharu ditambahkan, 8 bait diperlukan untuk merujuk objek baharu dan objek baharu itu sendiri menduduki 28 bait (mengambil integer sebagai contoh). Jadi saiz senarai boleh dikira dengan formula berikut:

64 + 8 * len(lst) + len(lst) * 28 bait

Python大数据为啥一定要用Numpy Array?

Dan Menggunakan Numpy boleh mengurangkan banyak penggunaan ruang. Sebagai contoh, Array integer Numpy dengan panjang n memerlukan:

96 + len(a) * 8 bait

Python大数据为啥一定要用Numpy Array?

Dapat dilihat bahawa semakin besar tatasusunan, lebih besar tatasusunan Lebih banyak ruang memori disimpan. Dengan mengandaikan tatasusunan anda mempunyai 1 bilion elemen, maka perbezaan dalam penggunaan memori adalah pada tahap GB.

2. Kaedah pengiraan terbina dalam yang lebih pantas

Jalankan skrip berikut, yang juga menjana dua tatasusunan dimensi tertentu dan menambahkannya bersama-sama Anda boleh melihat prestasi Senarai asli dan Numpy Array jurang.

import time
import numpy as np
size_of_vec = 1000
def pure_python_version():
t1 = time.time()
X = range(size_of_vec)
Y = range(size_of_vec)
Z = [X[i] + Y[i] for i in range(len(X)) ]
return time.time() - t1
def numpy_version():
t1 = time.time()
X = np.arange(size_of_vec)
Y = np.arange(size_of_vec)
Z = X + Y
return time.time() - t1
t1 = pure_python_version()
t2 = numpy_version()
print(t1, t2)
print("Numpy is in this example " + str(t1/t2) + " faster!")
Salin selepas log masuk

Hasilnya adalah seperti berikut:

0.00048732757568359375 0.0002491474151611328
Numpy is in this example 1.955980861244019 faster!
Salin selepas log masuk

Seperti yang anda lihat, Numpy adalah 1.95 kali lebih pantas daripada tatasusunan asli.

Jika anda berhati-hati, anda juga boleh mendapati tatasusunan Numpy boleh terus melaksanakan operasi tambah. Tatasusunan asli tidak boleh melakukan ini. Ini adalah kelebihan kaedah operasi Numpy.

Kami akan melakukan beberapa lagi ujian berulang untuk membuktikan bahawa kelebihan prestasi ini tahan lama.

import numpy as np
from timeit import Timer
size_of_vec = 1000
X_list = range(size_of_vec)
Y_list = range(size_of_vec)
X = np.arange(size_of_vec)
Y = np.arange(size_of_vec)
def pure_python_version():
Z = [X_list[i] + Y_list[i] for i in range(len(X_list)) ]
def numpy_version():
Z = X + Y
timer_obj1 = Timer("pure_python_version()",
 "from __main__ import pure_python_version")
timer_obj2 = Timer("numpy_version()",
 "from __main__ import numpy_version")
print(timer_obj1.timeit(10))
print(timer_obj2.timeit(10)) # Runs Faster!
print(timer_obj1.repeat(repeat=3, number=10))
print(timer_obj2.repeat(repeat=3, number=10)) # repeat to prove it!
Salin selepas log masuk

Hasilnya adalah seperti berikut:

0.0029753120616078377
0.00014940369874238968
[0.002683573868125677, 0.002754641231149435, 0.002803879790008068]
[6.536301225423813e-05, 2.9387418180704117e-05, 2.9171351343393326e-05]
Salin selepas log masuk

Seperti yang anda lihat, masa keluaran kedua sentiasa lebih kecil, yang membuktikan bahawa kelebihan prestasi ini adalah berterusan.

Jadi, jika anda melakukan beberapa penyelidikan data besar, seperti data kewangan dan data stok, menggunakan Numpy boleh menjimatkan banyak ruang memori dan mempunyai prestasi yang lebih berkuasa.

Rujukan: ​​https://www.php.cn/link/5cce25ff8c3ce169488fe6c6f1ad3c97​

Artikel kami berakhir di sini, jika anda suka Sila teruskan mengikuti kami untuk tutorial praktikal Python hari ini.

Atas ialah kandungan terperinci Mengapakah data besar Python mesti menggunakan Numpy Array?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengintegrasikan perkhidmatan Node.js atau Python dengan cekap di bawah seni bina lampu? Bagaimana untuk mengintegrasikan perkhidmatan Node.js atau Python dengan cekap di bawah seni bina lampu? Apr 01, 2025 pm 02:48 PM

Ramai pemaju laman web menghadapi masalah mengintegrasikan perkhidmatan node.js atau python di bawah seni bina lampu: lampu sedia ada (Linux Apache MySQL PHP) Laman web seni bina memerlukan ...

Apakah sebabnya mengapa fail penyimpanan berterusan saluran paip tidak dapat ditulis apabila menggunakan crawler scapy? Apakah sebabnya mengapa fail penyimpanan berterusan saluran paip tidak dapat ditulis apabila menggunakan crawler scapy? Apr 01, 2025 pm 04:03 PM

Apabila menggunakan crawler scapy, sebab mengapa fail penyimpanan berterusan paip tidak boleh ditulis? Perbincangan Ketika belajar menggunakan Crawler Scapy untuk Crawler Data, anda sering menemui ...

Apakah sebabnya mengapa Pool Proses Python mengendalikan permintaan TCP serentak dan menyebabkan pelanggan terjebak? Apakah sebabnya mengapa Pool Proses Python mengendalikan permintaan TCP serentak dan menyebabkan pelanggan terjebak? Apr 01, 2025 pm 04:09 PM

Proses Python Pool mengendalikan permintaan TCP serentak yang menyebabkan pelanggan terjebak. Apabila menggunakan Python untuk pengaturcaraan rangkaian, adalah penting untuk mengendalikan permintaan TCP serentak dengan cekap. …

Bagaimana untuk melihat fungsi asal yang terkandung secara dalaman oleh python funcools.partial Object? Bagaimana untuk melihat fungsi asal yang terkandung secara dalaman oleh python funcools.partial Object? Apr 01, 2025 pm 04:15 PM

Sangat meneroka kaedah tontonan python funcools.partial Object in Funcools.Partial Menggunakan Python ...

Pembangunan Aplikasi Desktop Cross-Platform Python: Perpustakaan GUI mana yang terbaik untuk anda? Pembangunan Aplikasi Desktop Cross-Platform Python: Perpustakaan GUI mana yang terbaik untuk anda? Apr 01, 2025 pm 05:24 PM

Pilihan Perpustakaan Pembangunan Aplikasi Desktop Python Python Banyak pemaju Python ingin membangunkan aplikasi desktop yang boleh dijalankan pada kedua-dua sistem Windows dan Linux ...

Python Hourglass Graph Lukisan: Bagaimana untuk mengelakkan kesilapan yang tidak ditentukan? Python Hourglass Graph Lukisan: Bagaimana untuk mengelakkan kesilapan yang tidak ditentukan? Apr 01, 2025 pm 06:27 PM

Bermula dengan Python: Lukisan Grafik Hourglass dan Pengesahan Input Artikel ini akan menyelesaikan masalah definisi berubah -ubah yang dihadapi oleh pemula python dalam program lukisan grafik Hourglass. Kod ...

Bagaimana cara mengira dan menyusun set data produk yang besar di Python? Bagaimana cara mengira dan menyusun set data produk yang besar di Python? Apr 01, 2025 pm 08:03 PM

Penukaran dan Statistik Data: Pemprosesan yang cekap bagi set data besar Artikel ini akan memperkenalkan secara terperinci bagaimana untuk menukar senarai data yang mengandungi maklumat produk kepada yang lain yang mengandungi ...

Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Apr 01, 2025 pm 05:09 PM

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

See all articles