概述
NumPy,数据科学的基石,通过高效数组操作与数学函数,提升Python在科学计算领域的表现。本文深入探讨NumPy基础与高级用法,涵盖数组创建、管理、数学运算及实战应用,助你熟练掌握这一必备工具,高效处理数据科学任务。
numpy简介:数据科学的基石NumPy,全名Numerical Python,是Python科学计算的核心库之一,同时也是许多数据科学和机器学习库的基础。它提供了一种高效、紧凑的数组数据结构,以及对数组进行复杂操作的一系列高级功能。NumPy的高效性及其在处理大量数据时的灵活性,使得它成为数据科学家、工程师和科学计算领域中的必备工具。
为什么使用NumPy
NumPy之所以受到广泛欢迎,主要有以下几个原因:
- 高效计算:NumPy数组操作比常规Python列表快得多,因为它是用C语言编写的底层部分,避免了Python的解释执行速度较慢的问题。
- 数组操作: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数组具有属性,如shape
、dtype
等,用于获取数组的维度和数据类型:
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 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦