NumPy:从初识到实战,探索Python科学计算的无限可能

简介: NumPy:从初识到实战,探索Python科学计算的无限可能

NumPy

在浩瀚的Python编程世界中,有一个强大的库如星辰般璀璨,它是数据科学家、机器学习工程师乃至量化金融分析师手中的利器——NumPy,它以其高效的数据处理能力和便捷的矩阵运算机制,在科研与工程领域中占据着举足轻重的地位。

一、NumPy初识:基石的力量

NumPy(Numerical Python)是Python中最核心的科学计算库之一,提供了一系列高级数学函数,以及对多维数组和矩阵的强大支持。它的基础数据结构numpy.ndarray为海量数据的存储和操作提供了极高的效率,并且无缝对接其他深度学习框架,如TensorFlow、PyTorch等,奠定了Python在数据分析与科学计算领域的基础地位。

二、NumPy功能:领略高效魅力

  1. 快速创建和操作数组:通过简单的API,我们可以轻松创建各种类型的数组,进行元素级操作、统计分析、排序、索引切片等任务,大大提升了开发效率。
  2. ndarray对象:NumPy的核心是一个名为numpy.ndarray的N维数组对象,它支持各种数据类型,并且高效地存储和操作同构数据集合。
  3. 高效的数组运算:NumPy中的数组支持快速的元素级数学运算、逻辑运算以及广播机制,能够以接近C语言的速度进行大规模数据处理。
  4. 矩阵运算:提供对矩阵的各种操作,如加减乘除、转置、求逆、解线性方程组、特征值分解、奇异值分解等。
  5. 数组索引与切片:类似于Python原生列表,但更加灵活,支持高级索引和花式索引。
  6. 统计函数:包含一系列统计学相关函数,例如求和、平均、中位数、标准差、最大值、最小值等。
  7. 排序和筛选:可以对数组进行排序,同时支持条件筛选操作。
  8. 形状变换:允许改变数组的维度和大小,包括reshape、flatten、squeeze、expand_dims等操作。
  9. 文件I/O:支持从磁盘读写多种格式的数据,如二进制、文本或图像文件。
  10. 随机数生成:内置了多个分布的随机数生成器,便于模拟和概率统计实验。

三、NumPy实战:计算最强大脑

创建数组

arr = np.array([1, 2, 3, 4, 5])

数组运算

result = arr1 + arr2

数学函数

result = np.sin(arr)

统计功能

mean = np.mean(arr)

随机数生成

random_arr = np.random.rand(5)

形状操作

reshaped_arr = arr.reshape(1, 4)

索引和切片

sub_arr = arr[2:4]

线性代数运算

result = np.dot(matrix1, matrix2)

数组拼接

concatenated_arr = np.concatenate((arr1, arr2))

数组重复

repeated_arr = np.repeat(arr, 3)

数组排序

sorted_arr = np.sort(arr)

布尔索引

bool_indexing_arr = arr[arr > 3]

数组转置

transposed_arr = arr.T

数组填充

filled_arr = np.full((3, 3), 5)

数组切割

split_arr = np.split(arr, 3)

实例1

import numpy as np
 
# 创建一个2D数组(矩阵)
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)
 
# 对数组进行转置操作
transpose = matrix.T
print(transpose)
 
# 计算矩阵的行和列的总和
row_sums = np.sum(matrix, axis=1)
col_sums = np.sum(matrix, axis=0)
print(row_sums, col_sums)

实例2

import numpy as np  
  
# 创建一个NumPy数组  
arr = np.array([5, 2, 8, 1, 9])  
  
# 对数组进行排序  
sorted_arr = np.sort(arr)  
print("排序后的数组:", sorted_arr)  
  
# 获取排序后数组的索引  
index = np.argsort(arr)  
print("排序后数组的索引:", index)

实例3

import numpy as np
 
# 创建一串随机数并计算统计指标
data = np.random.randn(1000)  # 创建一个标准正态分布的随机数组
mean = np.mean(data)  # 计算平均值
median = np.median(data)  # 计算中位数
std_dev = np.std(data)  # 计算标准差
print(f"Mean: {mean}")
print(f"Median: {median}")
print(f"Standard Deviation: {std_dev}")

实例4

import numpy as np
 
# 创建系数矩阵和常数向量
A = np.array([[2, 1], [1, 3]])
b = np.array([8, 6])
 
# 使用numpy.linalg.solve求解Ax=b
solution = np.linalg.solve(A, b)
print(solution)

实例5

import numpy as np
 
# 创建两个NumPy矩阵  
A = np.array([[1, 2], [3, 4]])  
B = np.array([[5, 6], [7, 8]])  
  
# 进行矩阵加法、减法和乘法运算  
C = A + B  
D = A - B  
E = np.dot(A, B)  
  
print("矩阵加法结果:\n", C)  
print("矩阵减法结果:\n", D)  
print("矩阵乘法结果:\n", E)

实例6

from PIL import Image
import numpy as np
 
# 加载图片为numpy数组
img = Image.open("image.jpg")
img_array = np.array(img)
 
# 图像灰度化
gray_img = np.dot(img_array[...,:3], [0.299, 0.587, 0.114])
gray_img = gray_img.astype(np.uint8)
 
# 将灰度图保存回文件
Image.fromarray(gray_img).save("gray_image.jpg")

实例7

np.random.rand(): 返回一个在 [0, 1) 之间的随机浮点数。
np.random.randint(low, high, size): 返回一个指定范围内的随机整数数组。
np.random.randn(d0, d1, ..., dn): 返回一个或多个标准正态分布的随机数数组。
np.random.random(size): 返回一个随机浮点数数组,其值在 [0, 1) 之间。
np.random.choice(a, size, replace=True, p=None): 从数组 a 中随机选择元素,或者使用概率 p 进行选择。
np.random.shuffle(x): 将数组 x 的元素顺序随机打乱。
np.random.permutation(x): 返回数组 x 的随机排列
 
# 除了这些与标准库并不多的,另外还有近30个各种抽取样本的np.random库函数


目录
相关文章
|
20天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
20天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
44 10
|
1月前
|
算法 Unix 数据库
Python编程入门:从基础到实战
本篇文章将带你进入Python编程的奇妙世界。我们将从最基础的概念开始,逐步深入,最后通过一个实际的项目案例,让你真正体验到Python编程的乐趣和实用性。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。让我们一起探索Python的世界吧!
|
1月前
|
并行计算 调度 开发者
探索Python中的异步编程:从基础到实战
在Python的世界里,异步编程是一种让程序运行更加高效、响应更快的技术。本文不仅会介绍异步编程的基本概念和原理,还将通过具体代码示例展示如何在Python中实现异步操作。无论你是初学者还是有经验的开发者,都能从中获益,了解如何运用这一技术优化你的项目。
|
1月前
|
数据处理 Python
探索Python中的异步编程:从基础到实战
在Python的世界中,“速度”不仅是赛车手的追求。本文将带你领略Python异步编程的魅力,从原理到实践,我们不单单是看代码,更通过实例感受它的威力。你将学会如何用更少的服务器资源做更多的事,就像是在厨房里同时烹饪多道菜而不让任何一道烧焦。准备好了吗?让我们开始这场技术烹饪之旅。
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据科学实战:从Pandas到机器学习
Python数据科学实战:从Pandas到机器学习
|
1月前
|
机器学习/深度学习 数据采集 人工智能
机器学习入门:Python与scikit-learn实战
机器学习入门:Python与scikit-learn实战
50 0
|
3月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
110 0
|
4月前
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
66 0
|
1月前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
51 3