کتاب راهنمای نامپای اثر ایوان آیدریس نسخه PDF انگلیسی
۸۴.۸۷۰ تومان قیمت اصلی ۸۴.۸۷۰ تومان بود.۳۸.۴۵۰ تومانقیمت فعلی ۳۸.۴۵۰ تومان است.
مشخصات فایل
- نوع فایل: PDF
- زبان: انگلیسی
- حجم فایل: 4.56 مگابایت
- قابل استفاده در: موبایل، تبلت، کامپیوتر
- نوع دسترسی: دانلود فوری بعد از خرید
معرفی کتاب NumPy Beginner’s Guide اثر Ivan Idris
NumPy Beginner’s Guide اثر Ivan Idris یک راهنمای عملی برای یادگیری محاسبات عددی با Python و کتابخانه NumPy است. فایل موجود در این محصول با نام Ivan Idris-NumPy Beginners Guide-Packt Publishing (2015).pdf ثبت شده و به زبان انگلیسی است. محور کتاب یادگیری آرایههای چندبعدی، عملیات برداری، Broadcasting، توابع عددی، آمار، جبر خطی و روشهایی است که باعث میشوند محاسبات علمی در Python سریعتر و ساختاریافتهتر انجام شوند.
NumPy یکی از پایههای اکوسیستم علمی Python است و بسیاری از کتابخانههای Data Science، Machine Learning و Scientific Computing روی ساختارها و قراردادهای آن بنا شدهاند. حتی اگر امروز بیشتر با pandas، SciPy، scikit-learn یا Frameworkهای یادگیری ماشین کار کنید، فهم ndarray، Shape، Data Type و Vectorization کمک میکند رفتار این ابزارها را دقیقتر درک کنید و کد عددی بهتری بنویسید.
NumPy چیست؟
NumPy کتابخانهای برای کار کارآمد با آرایههای عددی چندبعدی است. هسته آن ساختاری به نام ndarray است که دادههای همنوع را در حافظه نگه میدارد و عملیات عددی را به شکل برداری روی آنها اجرا میکند.
تفاوت اصلی NumPy با List معمولی Python فقط Syntax نیست. آرایه NumPy برای محاسبات عددی طراحی شده و بسیاری از عملیات آن در لایههای کامپایلشده اجرا میشوند. به همین دلیل در کارهای عددی بزرگ، Vectorization معمولاً بسیار سریعتر از Loopهای Python است.
ساخت ndarray
آرایه را میتوان از List یا Tuple ساخت یا با Functionهایی مانند zeros، ones، arange و linspace تولید کرد. انتخاب روش ساخت به نوع داده و مسئله بستگی دارد.
هنگام ساخت آرایه باید به Shape و Data Type توجه کرد. این دو ویژگی تقریباً در تمام عملیات بعدی نقش دارند و خطاهای بسیاری از ناسازگاری ابعاد یا نوع داده ایجاد میشوند.
Shape و Dimension
Shape مشخص میکند آرایه در هر محور چند عنصر دارد. یک Vector میتواند Shape یکبعدی داشته باشد، Matrix دوبعدی است و دادههای تصویری یا Batchهای مدل ممکن است سه یا چند بعد داشته باشند.
فهم Axis در NumPy بسیار مهم است. وقتی Mean یا Sum را روی Axis خاصی محاسبه میکنیم، در واقع مشخص میکنیم کدام Dimension تجمیع شود. اشتباه در Axis میتواند خروجیای با Shape درست اما معنای اشتباه ایجاد کند.
Data Type یا dtype
برخلاف List Python که میتواند انواع مختلف Object را در کنار هم نگه دارد، ndarray معمولاً یک dtype مشخص دارد. انواع Integer، Floating Point، Boolean و Complex از نمونههای رایجاند.
انتخاب dtype روی Memory و Precision اثر دارد. استفاده از نوع بسیار بزرگ میتواند حافظه را هدر دهد و نوع بیش از حد کوچک ممکن است Overflow یا از دست رفتن دقت ایجاد کند.
Indexing
NumPy امکان دسترسی مستقیم به عنصر یا مجموعهای از عناصر را با Index فراهم میکند. در آرایه چندبعدی میتوان برای هر Axis Index جداگانه مشخص کرد.
Indexing پایه عملیات پیچیدهتر مانند Slicing، Boolean Mask و Fancy Indexing است. فهم دقیق آن برای انتخاب بخش موردنیاز بدون Loop ضروری است.
Slicing
Slicing اجازه میدهد Range مشخصی از آرایه انتخاب شود. Syntax آن شبیه List Python است، اما در آرایه چندبعدی میتوان برای چند Axis همزمان Slice تعریف کرد.
نکته مهم این است که بسیاری از Sliceها View روی داده اصلی هستند، نه Copy مستقل. تغییر View ممکن است آرایه اصلی را نیز تغییر دهد. این رفتار برای Performance مفید است اما اگر شناخته نشود میتواند Bug ایجاد کند.
View در برابر Copy
NumPy برای کاهش مصرف حافظه در بسیاری از عملیات View ایجاد میکند. View همان Buffer داده را با Metadata متفاوت میبیند. Copy در مقابل حافظه مستقلی دارد.
هنگام تغییر داده باید بدانید Object جدید View است یا Copy. استفاده آگاهانه از copy() میتواند جلوی تغییر ناخواسته داده اصلی را بگیرد.
Reshape
reshape ساختار ابعادی آرایه را بدون تغییر ترتیب منطقی داده تغییر میدهد، البته تا زمانی که تعداد کل عناصر ثابت بماند. این عملیات در آمادهسازی داده برای Machine Learning و پردازش تصویر بسیار رایج است.
برای مثال Vector با 12 عنصر را میتوان به Matrix سه در چهار تبدیل کرد. اما معنا و ترتیب Axisها باید با مسئله واقعی سازگار باشد.
Transpose و جابهجایی محور
Transpose در Matrix سطر و ستون را جابهجا میکند. در آرایههای چندبعدی، Permutation محورهای مختلف اهمیت بیشتری پیدا میکند.
این عملیات هنگام کار با قراردادهای متفاوت Shape در Libraryها ضروری است؛ مثلاً تغییر میان Channel-first و Channel-last در داده تصویری.
Concatenation و Stack
گاهی چند آرایه باید روی یک Axis به هم متصل شوند. concatenate، vstack، hstack و خانواده Stack ابزارهای مختلف این کار هستند.
پیش از ترکیب باید Shapeهای سازگار بررسی شوند. تفاوت Concatenate با ایجاد Axis جدید باید بهدرستی فهمیده شود تا Dimension خروجی غیرمنتظره نشود.
Broadcasting
Broadcasting یکی از قدرتمندترین مفاهیم NumPy است. این قابلیت اجازه میدهد آرایههایی با Shape متفاوت، در شرایط مشخص، بدون ساخت Copy بزرگ روی یکدیگر عملیات انجام دهند.
برای مثال میتوان یک Vector را به هر Row یک Matrix اضافه کرد. NumPy به صورت منطقی Dimension کوچکتر را گسترش میدهد، اما داده را الزاماً در حافظه تکرار نمیکند.
قواعد Broadcasting
برای سازگاری، ابعاد از سمت راست مقایسه میشوند. دو Dimension زمانی سازگارند که برابر باشند یا یکی از آنها 1 باشد. اگر این شرط برقرار نباشد، عملیات با Shape Error مواجه میشود.
فهم این قواعد باعث میشود بسیاری از Loopها حذف شوند و در عین حال از ایجاد آرایههای موقت بزرگ جلوگیری شود.
Vectorization
Vectorization یعنی به جای Loop سطح Python، عملیات را روی کل Array یا Block داده اعمال کنیم. این سبک هم کد را کوتاهتر میکند و هم معمولاً سریعتر است.
برای مثال جمع دو Vector با یک Expression انجام میشود و NumPy محاسبه را در لایه بهینهتر اجرا میکند. با این حال هر Vectorizationی لزوماً کمحافظه نیست؛ ساخت آرایه موقت بزرگ میتواند هزینه ایجاد کند.
Universal Functions یا ufunc
توابعی مانند sqrt، exp، sin و عملیات حسابی روی عناصر آرایه به شکل برداری اجرا میشوند. این خانواده با نام Universal Functions شناخته میشوند.
ufuncها علاوه بر سرعت، Broadcasting و Type Handling را نیز پشتیبانی میکنند و یکی از عناصر اصلی سبک برنامهنویسی NumPy هستند.
عملیات تجمعی
Functionهایی مانند sum، mean، min، max، std و var برای خلاصهسازی داده استفاده میشوند. میتوان آنها را روی کل Array یا Axis خاص اجرا کرد.
انتخاب Axis درست باید با معنای داده هماهنگ باشد. اگر Rowها Sample و Columnها Feature باشند، Mean روی Axis صفر میانگین هر Feature را میدهد.
Boolean Masking
یک Condition روی Array میتواند آرایه Boolean تولید کند. از این Mask میتوان برای انتخاب فقط عناصر مطابق شرط استفاده کرد.
این روش برای Filter کردن داده، حذف Outlier یا جایگزینی مقدارها بسیار کاربردی است و اغلب نیاز به Loop را از بین میبرد.
Fancy Indexing
Fancy Indexing اجازه میدهد با Array یا List از Indexها، چند موقعیت دلخواه انتخاب شوند. برخلاف Slice، Fancy Indexing معمولاً Copy تولید میکند.
این قابلیت برای Sampling، Reordering و انتخاب نمونههای خاص مفید است، اما باید اثر آن روی Memory را در Dataset بزرگ در نظر گرفت.
Sorting
NumPy ابزارهایی برای Sort کردن مقدارها و گرفتن Index ترتیب دارد. argsort به جای خود مقدار، Indexهایی را برمیگرداند که داده را مرتب میکنند.
این روش هنگام رتبهبندی، پیدا کردن Top-K یا مرتب کردن یک Array بر اساس Array دیگر بسیار مفید است.
Set Operations
برای آرایههای یکبعدی میتوان عملیاتهایی مانند Unique، Intersection و Difference را اجرا کرد. unique برای پیدا کردن مقدارهای متمایز و Count آنها کاربرد زیادی دارد.
این ابزارها در آمادهسازی Labelها و تحلیل Categoryهای عددی مفیدند.
Random Number Generation
NumPy Generatorهای عدد تصادفی برای Sampling، Simulation و Initialization دارد. Uniform، Normal و انتخاب تصادفی از Distributionهای رایج هستند.
برای Reproducibility باید Seed یا Generator مشخص مدیریت شود. API Random در نسخههای جدید NumPy نسبت به نسلهای قدیمی تغییر و بهبود پیدا کرده است، بنابراین کدهای قدیمی کتاب ممکن است با سبک جدید متفاوت باشند.
جبر خطی
NumPy ابزارهایی برای Dot Product، Matrix Multiplication، حل دستگاه معادلات، Determinant و Decompositionهای پایه دارد. جبر خطی یکی از ارکان Data Science و Machine Learning است.
برای ضرب Matrix باید تفاوت ضرب Element-wise و Matrix Multiplication را بدانیم. استفاده اشتباه از Operator میتواند نتیجه کاملاً متفاوت تولید کند.
حل دستگاه معادلات
به جای محاسبه مستقیم Inverse برای حل Ax=b، معمولاً استفاده از Solver عددی مناسبتر و پایدارتر است. این یکی از Best Practiceهای مهم Numerical Computing است.
Condition Number نیز میتواند نشان دهد مسئله نسبت به Error عددی چقدر حساس است.
Eigenvalue و Eigenvector
Eigenvalue و Eigenvector در تحلیل سیستمهای خطی، PCA و بسیاری از الگوریتمهای علمی اهمیت دارند. NumPy Functionهایی برای محاسبات مربوط فراهم میکند.
در مسئله واقعی باید نوع Matrix و Stability عددی در نظر گرفته شود. گاهی SciPy Routine تخصصیتر انتخاب بهتری است.
آمار با NumPy
علاوه بر Mean و Variance، Percentile، Correlation و عملیات آماری پایه را میتوان روی Array اجرا کرد. این امکانات برای EDA و Preprocessing مفیدند.
برای آزمونهای آماری تخصصی یا Distributionهای پیشرفته، SciPy معمولاً ابزارهای گستردهتری دارد.
NaN و داده گمشده
در داده Floating Point ممکن است NaN برای مقدار گمشده یا نامعتبر وجود داشته باشد. بسیاری از Aggregationهای معمول در حضور NaN خروجی NaN میدهند.
Functionهایی مانند nanmean یا nansum میتوانند NaN را نادیده بگیرند. اما قبل از این کار باید بدانیم Missing چرا ایجاد شده و آیا نادیده گرفتن آن از نظر تحلیلی درست است.
Masked Arrays
Masked Array اجازه میدهد بعضی عناصر از محاسبات کنار گذاشته شوند بدون اینکه الزاماً داده اصلی حذف شود. این روش برای داده علمی با Measurementهای نامعتبر مفید است.
در اکوسیستم DataFrame، pandas ابزارهای متفاوتی برای Missing Data دارد، اما مفهوم Mask همچنان مهم است.
File I/O
NumPy میتواند Array را در Formatهای باینری مانند NPY ذخیره و دوباره Load کند. این Format معمولاً dtype و Shape را حفظ میکند.
برای Text Data نیز Functionهایی مانند loadtxt و genfromtxt وجود دارند، اما برای CSV پیچیده pandas اغلب راحتتر است.
Memory Mapping
وقتی Dataset بزرگتر از RAM باشد، Memory Mapping میتواند بخشی از File را مانند Array در دسترس قرار دهد بدون اینکه کل داده یکجا Load شود.
این روش برای بعضی Workflowهای علمی مفید است، هرچند Pattern دسترسی به Disk روی Performance اثر دارد.
NumPy و pandas
pandas برای داده جدولی Labelدار Interface سطح بالاتری فراهم میکند، اما بسیاری از عملیات داخلی آن با Arrayها و مفهوم dtype ارتباط دارند.
فهم NumPy کمک میکند رفتار تبدیل DataFrame به Array، Missing Value و Performance عملیات برداری را بهتر درک کنید.
NumPy و Matplotlib
Matplotlib معمولاً داده عددی را به صورت Array دریافت میکند. Signal، Image، Curve و Histogram را میتوان مستقیماً از داده NumPy رسم کرد.
ترکیب NumPy برای محاسبه و Matplotlib برای Visualization یک Workflow کلاسیک محاسبات علمی Python است.
NumPy و SciPy
SciPy روی NumPy بنا شده و الگوریتمهای تخصصیتری برای Optimization، Integration، Signal Processing، Statistics و Linear Algebra ارائه میکند.
NumPy را میتوان لایه پایه Array و محاسبات عمومی دانست و SciPy را مجموعه ابزارهای علمی سطح بالاتر.
Performance در برابر Loopهای Python
Loop Python برای تعداد زیادی عملیات عددی معمولاً کندتر از عملیات Vectorized است، زیرا هر Iteration سربار Interpreter دارد. NumPy این Loop را به سطح پایینتر منتقل میکند.
با این حال Performance باید اندازهگیری شود. گاهی Vectorization یک Array موقت بسیار بزرگ میسازد و Memory Bottleneck ایجاد میکند. Profiling بهتر از فرض کردن است.
Contiguous Memory
چیدمان داده در حافظه میتواند روی Performance اثر بگذارد. C-order و Fortran-order دو Layout رایج هستند و بعضی Libraryهای عددی نسبت به آن حساساند.
Transpose یا Slice ممکن است Array غیرContiguous ایجاد کند. در Integration با Libraryهای سطح پایین باید این موضوع بررسی شود.
Numerical Precision
Floating Point نمایش دقیق همه اعداد حقیقی نیست و عملیات عددی میتوانند Error کوچک ایجاد کنند. مقایسه مستقیم Floatها با Equality همیشه مناسب نیست.
Functionهایی مانند isclose برای مقایسه با Tolerance طراحی شدهاند. فهم Precision برای الگوریتمهای تکراری و محاسبات علمی مهم است.
Overflow و Underflow
Integer با dtype محدود میتواند در عملیات بزرگ Overflow کند و Floating Point بسیار کوچک ممکن است Underflow داشته باشد. NumPy مانند Integer نامحدود Python رفتار نمیکند.
انتخاب dtype و بررسی Range داده بخشی از طراحی محاسبه عددی است.
محدودیت نسخه کتاب
فایل این محصول مربوط به سالهای قدیمیتر اکوسیستم NumPy است و بعضی APIها، Aliasها و توصیههای Style از آن زمان تغییر کردهاند. نسخههای جدید NumPy برخی نامها را Deprecated یا حذف کردهاند و Random API نیز مدرنتر شده است.
برای اجرای مثالها، Concept را از کتاب بگیرید و Syntax را با Documentation نسخه نصبشده خود تطبیق دهید. این روش باعث میشود یادگیری به یک نسخه خاص محدود نشود.
این کتاب برای چه کسانی مناسب است؟
- برنامهنویسان Python که میخواهند وارد محاسبات عددی شوند.
- دانشجویان Data Science، Machine Learning و مهندسی.
- افرادی که با pandas یا SciPy کار میکنند اما پایه NumPy ضعیفی دارند.
- پژوهشگرانی که با Matrix، Signal یا Datasetهای عددی سروکار دارند.
- توسعهدهندگانی که میخواهند Loopهای عددی Python را به عملیات برداری تبدیل کنند.
پیشنیازها
آشنایی با Syntax پایه Python، List، Loop و Function برای شروع کافی است. برای فصلهای Linear Algebra دانستن Matrix و Vector مفید خواهد بود.
روش پیشنهادی مطالعه
هر مفهوم را در یک Notebook کوچک اجرا کنید. Shape و dtype هر Array را چاپ کنید و قبل از اجرای عملیات Broadcasting، Shape خروجی را خودتان پیشبینی کنید. این عادت درک ابعاد را بسیار تقویت میکند.
سپس یک Loop Python را با نسخه Vectorized بازنویسی و زمان اجرا را مقایسه کنید. برای بخش جبر خطی نیز مسئلههای کوچک را هم با محاسبه دستی و هم با NumPy حل کنید.
جمعبندی
NumPy Beginner’s Guide اثر Ivan Idris منبعی برای یادگیری هسته محاسبات عددی Python است. کتاب از ساخت ndarray، dtype، Indexing و Slicing شروع میکند و به Reshape، Broadcasting، Vectorization، ufunc، آمار، Random، جبر خطی و File I/O میرسد.
اگرچه بعضی Syntaxها و APIهای نسخه کتاب قدیمی شدهاند، اصول NumPy همچنان بخش مهمی از Data Science و Scientific Computing هستند. فهم Array، Shape، Axis و عملیات برداری باعث میشود کار با ابزارهای بالاتر اکوسیستم Python دقیقتر و کارآمدتر شود. برای کسی که میخواهد پایه عددی خود در Python را محکم کند، این کتاب یک مسیر آموزشی کاربردی ارائه میدهد.

نقد و بررسیها
هنوز بررسیای ثبت نشده است.