自学内容网 自学内容网

python数据分析与可视化工具介绍-numpy库

NumPy(Numerical Python的简称),是科学计算基础的一个库,提供了大量关于科学计算的相关功能,例如,线性变换,数据统计,随机数生成等。其提供的最核心的类型为多维数组类型(ndarray)。本文主要介绍了第三方库NumPy的相关操作。其中对数组的操作如创建多种特殊数组的以及简单操作和自带函数的使用是关键内容。

一  numpy介绍

主要功能和特点:

  1. 多维数组对象(ndarray)

    • NumPy的核心是ndarray(n-dimensional array)对象,它是一种快速的、灵活的、具有高性能的多维数组,可以用于存储同类型的数值数据。
  2. 数组操作

    • NumPy提供了丰富的功能,支持数组的基本操作,如数学运算、逻辑运算、统计运算等,可以对数组进行元素级的操作。
    • 数组可以通过广播(broadcasting)机制进行操作,使得数组在不同形状下也能进行计算。
  3. 切片和索引

    • NumPy支持灵活的数组切片和索引操作,可以轻松提取子数组、修改数组元素等。
  4. 线性代数

    • NumPy提供了线性代数相关的函数,如矩阵乘法、特征值计算、奇异值分解等,方便进行高效的数学计算。
  5. 随机数生成

    • NumPy里面有一个强大的随机模块,可以生成各种分布的随机数,比如均匀分布、正态分布等,非常适合于模拟和数据分析。
  6. 文件输入输出

    • NumPy支持读取和写入多种格式的数值数据文件,如文本文件、二进制文件、CSV等,方便与其他数据源的交互。
  7. 与其他库的兼容性

    • NumPy是许多其他科学计算库(如SciPy、Pandas、Matplotlib等)的基础,确保了它能够与这些库良好集成。

二 如何使用

首先需要安装库,当我们安装好python3之后,可以使用以下命令安装numpy库

pip install numpy

接下来代码演示如何创建数组和基本运算:

import numpy as np  

# 创建一个一维数组  
a = np.array([1, 2, 3, 4])  
print("一维数组:", a)  

# 创建一个二维数组  
b = np.array([[1, 2], [3, 4]])  
print("二维数组:\n", b)  

# 数组运算  
c = a + 5  # 所有元素加5  
print("数组加5:", c)  

d = b * 2  # 所有元素乘以2  
print("二维数组乘2:\n", d)  

# 矩阵乘法  
e = np.dot(b, b)  # 矩阵乘法  
print("矩阵乘法:\n", e)  

# 计算数组的均值  
mean_a = np.mean(a)  
print("一维数组的均值:", mean_a)

numpy几个常用的方法

1. 创建数组的方法

  • np.array(): 创建一个NumPy数组

    import numpy as np arr = np.array([1, 2, 3, 4])

  • np.zeros(): 创建一个全零数组

    zeros_array = np.zeros((3, 4)) # 3行4列的数组

  • np.ones(): 创建一个全一数组

    ones_array = np.ones((2, 3)) # 2行3列的数组

  • np.arange(): 创建一个均匀分布的数组

    arr = np.arange(0, 10, 2) # 从0到10步长为2

  • np.linspace(): 创建一个指定范围的均匀间隔数组

    arr = np.linspace(0, 1, 5) # 在0到1之间生成5个值

2. 数组操作方法

  • ndarray.shape: 获取数组的形状

    shape = arr.shape # 返回数组的形状

  • ndarray.reshape(): 修改数组的形状

    reshaped_arr = arr.reshape(2, 2) # 将数组重塑为2行2列

  • ndarray.flatten(): 将多维数组展平为一维数组

    flat_arr = arr.flatten()

  • ndarray.transpose(): 转置数组

    transposed_arr = b.T # 对二维数组b进行转置

3. 统计方法

  • np.mean(): 计算平均值

    mean_value = np.mean(arr)

  • np.median(): 计算中位数

    median_value = np.median(arr)

  • np.std(): 计算标准差

    std_dev = np.std(arr)

  • np.sum(): 计算数组的和

    total = np.sum(arr)

4. 数组运算

  • ndarray + 10: 所有元素加10

    new_arr = arr + 10

  • np.dot(): 矩阵乘法

    result = np.dot(a, b) # a和b进行矩阵乘法

  • np.add(): 逐元素加法

    c = np.add(arr1, arr2)

  • np.multiply(): 逐元素乘法

    d = np.multiply(arr1, arr2)

5. 逻辑操作

  • np.where(): 根据条件返回数组元素的索引

    indices = np.where(arr > 2) # 返回大于2的元素的索引

  • ndarray.any(): 检查是否至少有一个元素为True

    has_positive = (arr > 0).any()

  • ndarray.all(): 检查是否所有元素都为True

    all_positive = (arr > 0).all()

6. 文件输入输出

  • np.loadtxt(): 从文本文件加载数据

    data = np.loadtxt('data.txt')

  • np.savetxt(): 将数组保存到文本文件

    np.savetxt('output.txt', arr)

三 numpy结合matploatlib生成一个工资折线图图形,代码如下:


import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

# 去年的工资
last_year = np.random.randint(4000,6000,12)
print(last_year)
# 今年的工资
this_year = np.random.randint(5000,7000,12)
print(this_year)
plt.plot(range(1,13),last_year,marker='o',label='2023')
plt.plot(range(1,13),this_year,marker='x',label='2024')
# 2022的工资
year1=[4500,4600,4702,4789,4800,4750,4600,4390,4200,5000,5500,5900]
plt.plot(range(1,13),year1,marker='>',label='2022')
plt.legend(loc=1,title='我的工资',ncol=1)

plt.xticks([1,2,3,4,5,6,7,8,9,10,11,12])
plt.xlabel('月份')

plt.yticks([4000,4500,5000,5500,6000,6500,7000])
plt.ylabel('工资')

# 表格线
plt.grid(True,color='g',linestyle='-.')
plt.show()

运行的结果如下图:


原文地址:https://blog.csdn.net/li060708/article/details/142770216

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!