Python 之 NumPy 库学习

avatar 2024年04月15日15:57:40 0 80 views
博主分享免费Java教学视频,B站账号:Java刘哥

NumPy,全称Numerical Python,是一个开源的Python库,它为Python提供了强大的多维数组对象和用于处理这些数组的函数。

NumPy的核心是ndarray,它是一个高效的多维数组容器,用于存储和处理大规模的数据。

NumPy还提供了许多数学函数,用于数组之间的操作,以及用于线性代数、傅立叶变换和随机数生成等功能。

代码

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 数组加法
result = arr1 + arr2
print(result)  # 输出 [5 7 9]

# 数组乘法
result = arr1 * arr2
print(result)  # 输出 [4 10 18]

# 计算平方根
arr1 = np.array([1, 4, 9])
print(np.sqrt(arr1))  # 输出 [1. 2. 3.]

# 索引
print('# 索引')
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1[0])  # 输出 1
print(arr1[-1])  # 输出 5

# 布尔索引
print('# 布尔索引')
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1[arr1 > 2])  # 输出 [3 4 5]
print(arr1[arr1 % 2 == 1])  # 输出 [1 3 5]

# 使用切片获取子集
print('# 使用切片获取子集')
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1[1:3])  # 获取子集,输出 [2 3]

print()

# 获取形状
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1.shape)  # 输出 (2, 3) :表示 2 行 3 列

# 重塑
print('# 重塑')
arr1 = np.array([1, 2, 3, 4, 5, 6])
print(arr1.reshape(2, 3))  # 重塑为 2 行 3 列

# 聚合函数
print('# 聚合函数')
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1.sum())  # 输出 15
print(arr1.mean())  # 输出 3.0,平均值
print(arr1.max())  # 输出 5
print(arr1.min())  # 输出 1

# 广播
arr1 = np.array([1, 2, 3])
arr2 = np.array([10])  # 10 会被广播为 [10 10 10]
print(arr1 + arr2)  # 输出 [11 12 13]

# 随机数生成
print('# 随机数生成')
print(np.random.rand(2, 3))  # 生成 2 行 3 列的随机数

# 线性代数
print('# 线性代数')
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
print(np.dot(arr1, arr2))  # 输出 [[19 22] [43 50]],矩阵相乘

print()
# 保存到文件
print('# 保存到文件')
arr1 = np.array([1, 2, 3, 4, 5])
np.save('arr1.npy', arr1)  # 保存到文件 arr1.npy (当前目录下)

# 从文件读取
print('# 从文件读取')
arr2 = np.load('arr1.npy')  # 从文件 arr1.npy 读取数据
print(arr2)  # 输出 [1 2 3 4 5]

运行结果

[5 7 9]
[ 4 10 18]
[1. 2. 3.]
# 索引
1
5
# 布尔索引
[3 4 5]
[1 3 5]
# 使用切片获取子集
[2 3]

(2, 3)
# 重塑
[[1 2 3]
 [4 5 6]]
# 聚合函数
15
3.0
5
1
[11 12 13]
# 随机数生成
[[0.35610013 0.27385549 0.28567935]
 [0.9069464  0.22868908 0.90479727]]
# 线性代数
[[19 22]
 [43 50]]

# 保存到文件
# 从文件读取
[1 2 3 4 5]
  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0