数据科学初学者必知的Python第三方库NumPy

admin 2023年11月14日12:30:59评论21 views字数 3515阅读11分43秒阅读模式

什么是NumPy

NumPy(Numerical Python)是Python中用于科学计算的一个核心库。

它提供了一个高性能的多维数组对象(numpy.array),以及对这些数组进行操作的工具。


NumPy的主要功能包括:

  • 多维数组对象(Arrays)

NumPy提供了numpy.array对象,是一个灵活的N维数组,可以容纳任意类型的数据。

  • 广播(Broadcasting)

NumPy支持不同形状的数组之间的数学运算,使得在不增加内存消耗的情况下进行操作更加容易。

  • 数学函数

NumPy包含大量的数学函数,用于执行各种数学运算,如线性代数、傅里叶变换、统计等。

  • 输入/输出

NumPy包含了读写不同数据格式的工具,如文本文件、二进制文件,以及基于内存映射文件的数组操作。

Numpy库的优缺点

1 、优点:

  • 性能优越

    NumPy中的操作是基于C语言实现的,因此在处理大规模数据时非常高效。


  • 广泛应用

    在科学计算、数据分析和机器学习等领域,NumPy都是一种被广泛应用的工具。


  • 丰富的功能

        丰富的函数和工具,涵盖了从简单的数学运算到复杂的线性代数和统计运算。

  • 开源

        NumPy是开源的,拥有庞大的社区支持,有大量的文档和教程可供学习和参考。

2、 缺点:

  • 学习曲线

初学者来说,NumPy的学习曲线可能相对陡峭,对于没有数学和科学计算背景的人。

  • 内存消耗

在处理大规模数据时,NumPy可能占用较多的内存。


NumPy安装

在安装Python的环境下使用pip进行安装。

# 升级pip最新版本python -m pip install --upgrade pippip install numpy

你可以使用Conda来安装NumPy。确保你已经安装了Conda,然后在命令行中运行以下命令:

# 在环境外部安装适合所有环境conda install numpy
# 在某个虚拟环境中安装conda activate you_env# 升级conda conda update conda# 安装 numpyconda install numpy

NumPy的基础用法

  • 数组的创建

import numpy as np# 创建一维数组arr1 = np.array([1, 2, 3])print(arr1)
# 创建二维数组arr2 = np.array([[1, 2, 3], [4, 5, 6]])print(arr2)
# 创建全零数组zeros_arr = np.zeros((3, 3))print(zeros_arr)
# 创建全一数组ones_arr = np.ones((2, 2))print(ones_arr)
# 创建等差数组range_arr = np.arange(0, 10, 2)print(range_arr)
# 创建均匀分布数组uniform_arr = np.linspace(0, 1, 5)print(uniform_arr)
# 创建随机数组rand_arr = np.random.rand(2, 2)print(rand_arr)
  • 数组操作

# 数组形状二行三列shape = arr2.shape
# 数组维度dimension = arr2.ndim
# 数组元素类型dtype = arr2.dtype
print(shape,dimension,dtype)
# 数组转置transposed_arr = arr2.T# 行列交换print(arr2)print(transposed_arr)
# 数组切片,行不变,列取出col[1] col[2]sliced_arr = arr2[:, 1:3]print(sliced_arr)
# 数组运算 2行4列数组,数组中每个元素单独运算arr3 = np.array([[3,4,6,5],[9,8,5,3]])
# 注:不同维数是不能运算的sum_arr = arr3 + arr3mul_arr = arr3 * arr3print(sum_arr,mul_arr)
  • 广播

# 和其它类型操作print(arr3 + 1)print(arr3 - 12)
  • 数据处理

# 读取数据data = np.loadtxt('data.txt', delimiter=' ')

# 数据切片features = data[:, :-1]print(features)
#求均值 axis不设置所有m*n均值,0列均值 1行均值mean = np.mean(features, axis=0)print(mean)
# 计算标准差,就是上面均值在做开方操作std = np.std(features, axis=0)print(std)normalized_features = (features - mean) / stdprint(normalized_features)
  • 数学运算

# 矩阵乘法matrix_a = np.random.rand(3, 4)matrix_b = np.random.rand(4, 2)result_matrix = np.dot(matrix_a, matrix_b)print(result_matrix)
  • 神经网络中的数组操作

import numpy as np
# 假设有一个简单的神经网络层input_size = 3output_size = 2
# 随机生成输入数据和权重input_data = np.random.rand(4, input_size)weights = np.random.rand(input_size, output_size)
# 矩阵乘法output_data = np.dot(input_data, weights)
# 激活函数def sigmoid(x): return 1 / (1 + np.exp(-x))
activated_output = sigmoid(output_data)
print(activated_output)
  • 图像处理

import numpy as npfrom PIL import Image
# 读取图像image_path = "mm.jpg"image = Image.open(image_path)print(image.size,image.format,image.mode)# display(image)
# 转换为NumPy数组image_array = np.array(image)

# 图像缩放size = (image.size[0] // 2,image.size[1] // 2)
resize = Image.fromarray(image_array,'RGB').resize(size)
# 显示原图和缩放后的图display(image,resize)resized_image = np.array(resize)
# 提取颜色通道red_channel = resized_image[:, :, 0]green_channel = resized_image[:, :, 1]blue_channel = resized_image[:, :, 2]print(red_channel,green_channel,blue_channel)

sd生成600,720的美女图,进行截取和颜色提取

数据科学初学者必知的Python第三方库NumPy


  • 损失函数计算

在深度学习中,损失函数用于衡量模型预测与实际标签之间的差异。NumPy可以用于计算损失函数。

# 假设有模型预测和实际标签predictions = np.array([0.2, 0.8, 0.5])true_labels = np.array([0, 1, 1])
# 交叉熵损失函数 CE(p,q)=−∑i pi log(qi) def cross_entropy_loss(predictions, true_labels): epsilon = 1e-15 predictions = np.clip(predictions, epsilon, 1 - epsilon) loss = - np.sum(true_labels * np.log(predictions + 1e-9)) return loss
loss = cross_entropy_loss(predictions, true_labels)


  • 性能优化

然NumPy在许多情况下具有足够的性能,但在深度学习中,通常需要处理大规模数据和复杂的模型。为了进一步提高性能,可以考虑使用GPU加速库(例如CUDA)来加速NumPy操作。

import cupy as cp  # 使用CuPy替代NumPy
# 在GPU上执行操作arr_cpu = np.random.rand(1000, 1000)arr_gpu = cp.asarray(arr_cpu)
# 使用CuPy进行加速计算result_gpu = cp.dot(arr_gpu, arr_gpu)result_cpu = cp.asnumpy(result_gpu)

原文始发于微信公众号(程序员老朱):数据科学初学者必知的Python第三方库NumPy

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月14日12:30:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   数据科学初学者必知的Python第三方库NumPyhttp://cn-sec.com/archives/2199513.html

发表评论

匿名网友 填写信息