数据处理与统计分析 —— numpy入门

目录

概述

属性

创建ndarray

[zeros() /ones()/empty()](#zeros() /ones()/empty())

arange ()

matrix ()

创建随机数矩阵

转换数据类型

等比/等差数列

Numpy内置函数

基本函数

统计函数

比较函数

去重函数

排序函数

概述

  • NumPy(Numerical Python)是Python数据分析必不可少的第三方库
  • 重要功能
      1. 高性能科学计算和数据分析的基础包
      1. ndarray,多维数组,具有矢量运算能力,快速、节省空间
      1. 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
      1. 用于读写磁盘数据的工具以及用于操作内存映射文件的工具

属性

    • ndarray.ndim 数组的维度,几维数组返回的就是几

    • ndarray.shape 返回几行几列

    • ndarray.size 返回元素个数

    • ndarray.dtype 返回元素类型

    • ndarray.itemsize 返回每个元素的字节数

      python 复制代码
      # 创建一个二维数组
      import numpy as np
      arr = np.array([[1,2,3],[4,5,6]])
      print(f"ndarray对象:{arr}")
      print(f"ndarray对象维度:{arr.ndim}")
      print(f"ndarray对象元素个数:{arr.size}")
      print(f"ndarray对象元素类型:{arr.dtype}")

创建ndarray

  • 普通创建array()
    *

    python 复制代码
    import numpy as np
    arr = np.array([1.0,2.0,3.0,4.0,5.0])
    print(f"数组{arr}")

zeros() /ones()/empty()

  • 函数zeros()创建一个全是0的数组

    python 复制代码
    # zeros()函数创建全0数组
    import numpy as np
    arr = np.zeros((2,3))
    print(f"数组:\n{arr}")
  • 函数ones()创建一个全1的数组

    python 复制代码
    # ones()函数创建全1数组
    import numpy as np
    arr = np.ones((2,3))
    print(f"数组:\n{arr}")
    python 复制代码
    # ones()函数创建全1数组
    import numpy as np
    # 创建三维数组,2个数组,每个数组3行4列
    arr = np.ones((2,3,4)) 
    print(f"数组:\n{arr}")
    print(f"数组类型{type(arr)}")
    print(f"数组维度{arr.ndim}")
    print(f"数组元素个数{arr.size}")
    print(f"数组元素类型:{arr.dtype}")
    • 函数empty()创建一个内容随机并且依赖于内存状态的数组。

      • 默认创建的数组类型(dtype)都是float64
    python 复制代码
    # empty()函数创建数组,内容随机,依赖内存状态的随机值
    import numpy as np
    arr = np.empty((2,3))
    print(f"数组:\n{arr}")
    print(f"数组类型{type(arr)}")
    print(f"数组维度{arr.ndim}")
    print(f"数组元素个数{arr.size}")
    print(f"数组元素类型:{arr.dtype}")

arange ()

arange() 类似python 的 range() ,创建一个一维 ndarray 数组。

python 复制代码
# 生成一个1到5的数组(不包含5),步长为2,数据类型为int32
import numpy as np
arr = np.arange(1,5,2,dtype=np.int32)  
print(f"数组:\n{arr}")
print(f"数组类型{type(arr)}")
print(f"数组维度{arr.ndim}")
print(f"数组元素个数{arr.size}")
print(f"数组元素类型:{arr.dtype}")

matrix ()

matrix 是 ndarray 的子类,只能生成 2 维的矩阵

python 复制代码
# matrix()创建一个矩阵
import numpy as np
arr = np.matrix('1 2;3 4')
arr2 = np.matrix('1,2;3,4')
arr3 = np.matrix([[1,2],[3,4]])
print(f"数组:{arr}")
print(f"数组:{arr2}")
print(f"数组:{arr3}")

运行结果:

创建随机数矩阵

函数:rand(); randint(); uniform()

python 复制代码
# rand()函数创建随机数矩阵(浮点数)
# 创建一个二维数组,2行3列,元素随机,范围0-1(规定)
import numpy as np
arr = np.random.rand(2,3) 
print(f"数组:\n{arr}")
python 复制代码
# randint()函数创建随机数矩阵(整数)
import numpy as np

# 创建一个二维数组,2行3列,元素随机,范围2-7
arr = np.random.randint(2,8,size=(2,3)) 
print(f"数组:\n{arr}")
print(f"数组类型{type(arr)}")
print(f"数组元素类型:{arr.dtype}")
python 复制代码
# 随机生成矩阵(浮点数、范围可自定义)
import numpy as np
arr = np.random.uniform(1,5,size=(2,5))
print(f"数组:\n{arr}")
print(f"数组类型{type(arr)}")
print(f"数组元素个数{arr.size}")
print(f"数组元素类型:{arr.dtype}")

转换数据类型

python 复制代码
import numpy as np
arr = np.random.uniform(1,5,size=(2,5))
print(f"数组:\n{arr}")
print(f"数组类型{type(arr)}")
print(f"数组元素类型:{arr.dtype}")

arr1 = arr.astype(np.int32)
print(f"数组:\n{arr1}")
print(f"数组类型{type(arr1)}")
print(f"数组元素类型:{arr1.dtype}")

等比/等差数列

等比数列

python 复制代码
# 等比数列
# a = np.logspace(0,0,10)
# 第一个1:起始值的指数(10⁰)
# 第2个10:结束值的指数(10⁰)
# 第3个10:生成10个数
import numpy as np
a = np.logspace(0,0,10)
print(a)
python 复制代码
# 等比数列
# a = np.logspace(0,9,10,base = 2)
# 第1个0:起始值的指数
# 第2个9:结束值的指数
# 第3个10:生成10个数
# 第4个base = 2:指定生成数列的基数

import numpy as np
a = np.logspace(0,9,10,base = 2)
print(a)

等差数列

python 复制代码
# 第2个10:结束值
# 第3个10:生成10个数
a1 = np.linspace(0,10,10, endpoint= False) # 不包含结束值
"""
步长计算:(终止值 -起始值)/(元素的个数-1)=1.0
元素的计算:起始值 + 步长 *(索引值0~9)
1+1.0*0=1
1+1.0*1=2
1+1.0*2=3
"""
a2 = np.linspace(0,10,11, endpoint= True) # 包含结束值
"""
步长计算:(终止值 - 起始值)/(元素的个数)=(10-1)/10 =0.9
实际区间:数学表示为[1,10]
终点的计算:起始值 +步长*(元素的个数-1)=1+0.9*9=9.1
实际区间:[1,9.1)
元素的计算:起始值 +步长 *(索引值0~9)
1+0.9*0=1
1+0.9*1=1.9
1+0.9*2=2.8
1+0.9*9=9.1
"""
print(a1)
print(a2)

Numpy内置函数

基本函数

np.ceil(): 向上最接近的整数,参数是 number 或 array

np.floor(): 向下最接近的整数,参数是 number 或 array

np.rint(): 四舍五入,参数是 number 或 array

np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array

np.multiply(): 元素相乘,参数是 number 或 array

np.divide(): 元素相除,参数是 number 或 array

np.abs():元素的绝对值,参数是 number 或 array

np.where(condition, x, y): 三元运算符,x if condition else y

python 复制代码
import numpy as np

# 生成随机数组
arr = np.random.randn(2, 3)
print(f"原始数组:\n{arr}\n")

# 取整操作
print(f"向上取整 (ceil):\n{np.ceil(arr)}\n")
print(f"向下取整 (floor):\n{np.floor(arr)}\n")
print(f"四舍五入 (rint):\n{np.rint(arr)}\n")

# 特殊值检查
print(f"检查NaN值:\n{np.isnan(arr)}\n")

# 数组运算
print(f"元素相乘 (multiply):\n{np.multiply(arr, arr)}\n")
print(f"元素相除 (divide):\n{np.divide(arr, arr)}\n")

# 条件判断
print(f"条件赋值 (where):\n{np.where(arr > 0, 1, -1)}")

运行结果:

python 复制代码
原始数组:
[[-0.77870842  1.6587777   1.09137868]
 [ 0.54180519 -1.51279888  0.74223392]]

向上取整 (ceil):
[[-0.  2.  2.]
 [ 1. -1.  1.]]

向下取整 (floor):
[[-1.  1.  1.]
 [ 0. -2.  0.]]

四舍五入 (rint):
[[-1.  2.  1.]
 [ 1. -2.  1.]]

检查NaN值:
[[False False False]
 [False False False]]

元素相乘 (multiply):
[[0.60638681 2.75154347 1.19110743]
 [0.29355286 2.28856046 0.55091119]]

元素相除 (divide):
[[1. 1. 1.]
 [1. 1. 1.]]

条件赋值 (where):
[[-1  1  1]
 [ 1 -1  1]]

统计函数

np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array

np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array

np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array

np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array

np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array

python 复制代码
import numpy as np
arr = np.arange(12).reshape(3,4) # 3行4列的二维数组
print(f"数组:{arr}")

# 2: 演示cumsum(),累加和
print(f"累加和:{np.cumsum(arr)}") # 累加和:[ 0  1  3  6 10 15 21 28 36 45 55 66]

# 3: 演示sum(), 所有元素的和
print(f"所有元素的和:{np.sum(arr)}") # 所有元素的和:66
print(f"所有元素的按列求和:{np.sum(arr, axis=0)}") # 所有元素的按列求和:[12 15 18 21]
print(f"所有元素的按行求和:{np.sum(arr, axis=1)}") # 所有元素的按行求和:[ 6 22 38]

运行结果:

比较函数

np.any(): 至少有一个元素满足指定条件,返回True

np.all(): 所有的元素满足指定条件,返回True

python 复制代码
import numpy as np
arr = np.random.randn(2, 3)
print(f"数组:{arr}")

print(f"至少有一个元素满足指定条件:{np.any(arr > 0)}")
print(f"所有的元素满足指定条件:{np.all(arr > 0)}")

运行结果:

去重函数

np.unique():找到唯一值并返回排序结果,类似于Python的set集合

python 复制代码
import numpy as np
arr = np.array([[1, 2, 1, 6], [1, 3, 2,5]]) # 列数需要一致
print(f"数组:{arr}")

# 2:去重
print(f"去重:{np.unique(arr)}")

运行结果:

排序函数

方式1:np.sort(arr):排序,并返回排序后的结果

方式2:arr.sort():排序,并修改原数组

python 复制代码
import numpy as np
# 1:创建nparray对象
arr = np.array([1, 5, 3, 2, 6])
print(f"数组:{arr}")

# 2: 排序
arr_new = np.sort(arr)
print(f"排序后的结果:{arr_new}")

# 3:排序修改原数组
arr.sort() # 直接对原数组对象进行排序
print(f"排序后的结果:{arr}")

运行结果:

相关推荐
临沂GEO1 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白1 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
荷蒲2 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
数据狐(Datafox)4 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机4 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor6925 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy5 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
月光船幽幽6 小时前
真实即粗糙,光滑是伪造
人工智能·python
一次旅行6 小时前
Attention机制从数学到工程:拆解缩放点积+多头注意力|附可运行PyTorch实现与踩坑指南
人工智能·pytorch·python
泡干脆面就番茄6 小时前
NumPy 科学计算完全指南:从数组创建到广播机制
python·numpy