亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

numpy實戰:從零基礎到數據科學入門

概述

NumPy,数据科学的基石,通过高效数组操作与数学函数,提升Python在科学计算领域的表现。本文深入探讨NumPy基础与高级用法,涵盖数组创建、管理、数学运算及实战应用,助你熟练掌握这一必备工具,高效处理数据科学任务。

numpy简介:数据科学的基石

NumPy,全名Numerical Python,是Python科学计算的核心库之一,同时也是许多数据科学和机器学习库的基础。它提供了一种高效、紧凑的数组数据结构,以及对数组进行复杂操作的一系列高级功能。NumPy的高效性及其在处理大量数据时的灵活性,使得它成为数据科学家、工程师和科学计算领域中的必备工具。

为什么使用NumPy

NumPy之所以受到广泛欢迎,主要有以下几个原因:

  1. 高效计算:NumPy数组操作比常规Python列表快得多,因为它是用C语言编写的底层部分,避免了Python的解释执行速度较慢的问题。
  2. 数组操作:NumPy提供了丰富的数组操作函数,如切片、索引、广播等,简化了数据处理流程。
  3. 数学函数:内置了大量用于数学运算的函数,非常适合进行矩阵运算、统计分析等。
  4. 向量化操作:NumPy操作可以向量化,即在数组级别的操作,避免了编写循环,提高了代码的可读性和效率。
numpy基础操作

数组创建

NumPy数组可以通过多种方式创建:

import numpy as np

# 创建一个一维数组
array_1d = np.array([1, 2, 3, 4])
print("1D array:", array_1d)

# 使用range函数创建数组
array_1d_range = np.array(range(10))
print("1D array from range:", array_1d_range)

# 创建多维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print("2D array:", array_2d)

# 从列表创建
list_to_array = np.array([[1, 2], [3, 4]])
print("Array from list:", list_to_array)

# 创建全零、全一或随机数数组
zeros_array = np.zeros((2, 3))
ones_array = np.ones((2, 2))
random_array = np.random.rand(2, 2)
print("Zeros array:", zeros_array)
print("Ones array:", ones_array)
print("Random array:", random_array)

数组属性

NumPy数组具有属性,如shapedtype等,用于获取数组的维度和数据类型:

print("Array 1D shape:", array_1d.shape)
print("Array 1D dtype:", array_1d.dtype)

print("Array 2D shape:", array_2d.shape)
print("Array 2D dtype:", array_2d.dtype)

print("List to array shape:", list_to_array.shape)
print("List to array dtype:", list_to_array.dtype)

print("Zeros array shape:", zeros_array.shape)
print("Zeros array dtype:", zeros_array.dtype)

print("Ones array shape:", ones_array.shape)
print("Ones array dtype:", ones_array.dtype)

print("Random array shape:", random_array.shape)
print("Random array dtype:", random_array.dtype)
数组操作

索引与切片

访问和切片数组是NumPy中最常用的操作:

print("First element of array 1D:", array_1d[0])
print("Last element of array 1D:", array_1d[-1])

# 切片操作
print("Slice from index 1 to 3 of array 1D:", array_1d[1:3])
print("Slice from the end with step 2 of array 2D:", array_2d[::-2, ::2])

# 多维数组切片
print("Slice from array 2D, rows 0 to 1, columns 1 to 2:", array_2d[0:1, 1:2])

重塑与连接

NumPy提供了多种方法来改变数组的形状和连接数组:

# 重塑数组
reshaped_array = array_2d.reshape(3, 2)
print("Reshaped array:", reshaped_array)

# 连接数组
stacked_array = np.vstack((array_1d, array_2d))
print("Stacked array vertically:", stacked_array)
数据处理与数学运算

算术运算

NumPy允许在数组级别执行算术运算,例如加减乘除:

print("Addition of two arrays:", array_1d + array_2d)
print("Multiplication of array 1d with array 2d:", array_1d * array_2d)

# 算术运算的结果仍然是NumPy数组,保持向量化特性

数组广播

数组广播允许在操作不同形状的数组时自动扩展较小数组的维度:

# 示例:使用广播对数组进行加法操作
broadcast_array = np.array([1, 2, 3])
expanded_array = broadcast_array + array_1d
print("Broadcast addition result:", expanded_array)
numpy高级功能

函数应用

NumPy提供了大量的数学函数,可以在数组上应用,进行复杂的数据处理:

from numpy import sin, cos

# 应用函数
sine_values = sin(array_1d)
cosine_values = cos(array_1d)

print("Sine values:", sine_values)
print("Cosine values:", cosine_values)

索引与查找

NumPy支持高级索引和查找功能,非常适合数据筛选和分析:

# 索引查找
indices = array_1d > 2
print("Indices for values greater than 2:", indices)
selected_values = array_1d[indices]
print("Selected values:", selected_values)

# 查找最大值和最小值
max_value = np.max(array_1d)
min_value = np.min(array_1d)
print("Max value:", max_value)
print("Min value:", min_value)
实战应用案例

数据清洗与预处理

在数据处理阶段,使用NumPy可以快速完成数据清洗和预处理任务:

import pandas as pd

# 假设有一些数据
data = {
    'age': [25, 30, 22, 40, 35],
    'income': [50000, 60000, 45000, 55000, 58000],
    'status': ['active', 'inactive', 'pending', 'active', 'inactive'],
}

# 使用pandas DataFrame进行数据预处理
df = pd.DataFrame(data)

# 使用NumPy进行数据清洗(去除无效值)
filtered_data = df[df['age'] > 20]
print("Data after cleaning:", filtered_data)

# 重塑数据,为后续分析准备
reshaped_data = filtered_data.pivot(index='status', columns='age', values='income')
print("Data reshaped for analysis:", reshaped_data)

通过这些实战案例,我们可以熟练地利用NumPy处理和分析数据,为其后续的数据科学任务打下坚实的基础。掌握NumPy的核心功能和高级应用,将使你能够更高效、更专业地处理数据科学中的各种挑战。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消