Python数据类型之numpy使用实例分析

发布时间:2022-07-19 17:30:49 作者:iii
来源:亿速云 阅读:237

Python数据类型之numpy使用实例分析

引言

在Python编程中,numpy是一个非常重要的库,尤其在科学计算和数据分析领域。numpy提供了高效的多维数组对象ndarray,以及大量的数学函数来操作这些数组。本文将深入探讨numpy的基本数据类型及其使用实例,帮助读者更好地理解和应用numpy

1. numpy简介

numpy(Numerical Python)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。numpy的核心是ndarray对象,它是一个多维数组对象,具有以下特点:

2. numpy数组的创建

2.1 从Python列表创建

import numpy as np

# 从Python列表创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)

# 从Python列表创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)

2.2 使用arange函数创建

# 创建从0到9的一维数组
arr3 = np.arange(10)
print(arr3)

# 创建从1到10,步长为2的一维数组
arr4 = np.arange(1, 10, 2)
print(arr4)

2.3 使用linspace函数创建

# 创建从0到1,包含5个元素的等间隔数组
arr5 = np.linspace(0, 1, 5)
print(arr5)

2.4 使用zerosones函数创建

# 创建3x3的全0数组
arr6 = np.zeros((3, 3))
print(arr6)

# 创建2x2的全1数组
arr7 = np.ones((2, 2))
print(arr7)

2.5 使用eye函数创建单位矩阵

# 创建3x3的单位矩阵
arr8 = np.eye(3)
print(arr8)

3. numpy数组的基本操作

3.1 数组的形状和维度

# 获取数组的形状
print(arr2.shape)

# 获取数组的维度
print(arr2.ndim)

3.2 数组的索引和切片

# 一维数组的索引
print(arr1[2])

# 二维数组的索引
print(arr2[1, 2])

# 一维数组的切片
print(arr1[1:4])

# 二维数组的切片
print(arr2[:, 1])

3.3 数组的变形

# 将一维数组变形为二维数组
arr9 = arr1.reshape((5, 1))
print(arr9)

# 将二维数组展平为一维数组
arr10 = arr2.flatten()
print(arr10)

3.4 数组的拼接

# 水平拼接
arr11 = np.hstack((arr1, arr1))
print(arr11)

# 垂直拼接
arr12 = np.vstack((arr1, arr1))
print(arr12)

3.5 数组的广播

# 数组与标量的广播
arr13 = arr1 + 2
print(arr13)

# 数组与数组的广播
arr14 = arr1 + np.array([10, 20, 30, 40, 50])
print(arr14)

4. numpy数组的数学运算

4.1 基本运算

# 加法
arr15 = arr1 + arr1
print(arr15)

# 减法
arr16 = arr1 - arr1
print(arr16)

# 乘法
arr17 = arr1 * arr1
print(arr17)

# 除法
arr18 = arr1 / arr1
print(arr18)

4.2 矩阵乘法

# 矩阵乘法
arr19 = np.dot(arr2, arr2.T)
print(arr19)

4.3 统计运算

# 求和
print(np.sum(arr1))

# 求平均值
print(np.mean(arr1))

# 求最大值
print(np.max(arr1))

# 求最小值
print(np.min(arr1))

4.4 线性代数运算

# 计算行列式
arr20 = np.array([[1, 2], [3, 4]])
print(np.linalg.det(arr20))

# 计算逆矩阵
print(np.linalg.inv(arr20))

# 计算特征值和特征向量
print(np.linalg.eig(arr20))

5. numpy数组的高级操作

5.1 布尔索引

# 布尔索引
arr21 = np.array([1, 2, 3, 4, 5])
mask = arr21 > 2
print(arr21[mask])

5.2 花式索引

# 花式索引
arr22 = np.array([1, 2, 3, 4, 5])
indices = [0, 2, 4]
print(arr22[indices])

5.3 数组的排序

# 数组的排序
arr23 = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])
print(np.sort(arr23))

5.4 数组的去重

# 数组的去重
arr24 = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
print(np.unique(arr24))

6. numpy数组的存储与读取

6.1 保存数组到文件

# 保存数组到文件
np.save('arr1.npy', arr1)

6.2 从文件读取数组

# 从文件读取数组
arr25 = np.load('arr1.npy')
print(arr25)

6.3 保存数组为文本文件

# 保存数组为文本文件
np.savetxt('arr1.txt', arr1)

6.4 从文本文件读取数组

# 从文本文件读取数组
arr26 = np.loadtxt('arr1.txt')
print(arr26)

7. numpy数组的应用实例

7.1 图像处理

from PIL import Image

# 读取图像
img = Image.open('image.jpg')
img_array = np.array(img)

# 图像灰度化
gray_img_array = np.dot(img_array[..., :3], [0.2989, 0.5870, 0.1140])
gray_img = Image.fromarray(gray_img_array.astype(np.uint8))
gray_img.save('gray_image.jpg')

7.2 数据可视化

import matplotlib.pyplot as plt

# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制图形
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('Sine Wave')
plt.show()

7.3 机器学习

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 数据预处理
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 训练模型
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)

# 预测
y_pred = knn.predict(X_test)
print(y_pred)

8. 总结

numpy是Python中用于科学计算的核心库之一,提供了高效的多维数组对象和丰富的数学函数。通过本文的介绍,读者应该对numpy的基本数据类型及其使用有了更深入的理解。无论是数据处理、图像处理还是机器学习,numpy都扮演着不可或缺的角色。希望本文的实例分析能够帮助读者在实际项目中更好地应用numpy

参考文献


以上是关于numpy数据类型及其使用实例的详细分析。希望这篇文章能够帮助你更好地理解和应用numpy。如果你有任何问题或建议,欢迎在评论区留言。

推荐阅读:
  1. Numpy之reshape()使用详解
  2. 关于Numpy数据类型对象(dtype)使用详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python numpy

上一篇:JavaScript之DOM的知识点有哪些

下一篇:Java Servlet程序实例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》