当前位置: 首页 > news >正文

数据分析小白训练营:基于python编程语言的Numpy库介绍(第三方库)(上篇)

(一)Numpy库的安装

安装指定版本的Numpy库,打开命令提示符,输入下图内容,只需要将1.25.5的版本修改成个人需要的版本,然后按下回车键,numpy库就安装在python中:

指定版本numpy库安装可能出现与当前python解释器不适配的报错情况,numpy库版本不同,函数功能也有变化,想知道当前电脑的python解释器适配什么版本的numpy库,有一下两种方法:

  1. 在命令提示符,输入python,按下回车键,查看当前python解释器版本,然后去浏览器搜索当前版本的python解释器适配哪些numpy库
  2. 在命令提示符里,任意输入一个版本的版本,如果出现报错,命令提示符也会在报错的同时,给你适配版本的python解释器

(二)认识numpy和配置环境

对大量数据进行分析,python中的列表和字典可以存储大量数据,但是无法对数据进行计算,而numpy库可以将数据存储为矩阵的格式,

numpy库将数据存储为矩阵的格式的优势:

  1. 把数据当作矩阵来处理,可以大大提高运行速度(numpy库的底层用c封装,python只是调用代码,方便用户操作)
  2. 极大方便了计算(numpy库依赖math数学库)
  3. 金融行业将大量数据存储在excel中,但是excel执行的速度没有numpy库执行的速度快

示例代码:

#numpy第三方库,可以将数据存储为矩阵的形式
import numpy as np#import numpy:导入numpy库,as np:取别名为np(可不写) 
#numpy(底层用C,Python):数字,矩阵)处理数据的速度比较忙,:
#科学计算 库,包含了很多和数学相关的公式#计算一下sin(),cos,tan()
print(np.sin(1))#这里参数为弧度,角度(D)和弧度(R)之间的关系:D = (180/π) × R
#计算一下绝对值
print(np.abs(-1))#abs():求绝对值
# np.还有很多函数,进入源代码浏览一下。
#numpy 还可以进行矩阵运算
#numpy库依赖math数学库

(三)创建array

  • 矩阵的数据类型叫做ndarray
  • np.array(...)NumPy 的构造函数,不是任何实例方法
  • array:将矩阵数据可视化展示

示例代码:

#array(数组) ->模拟了矩阵import numpy as np#导入numpy  as np#一维数组
list1 = [1,2,3,4,5] #python自带的列表数据类型
v = np.array(list1)
print(v)#二维数组[多个一维数组构成]
m = np.array([list1,list1,list1])
print(m)#三维数组[多个二维数组构成]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z)z = np.array([m,m,m])
#更高维的y = np.array([z,z,z])"""
数组的基本属性
"""
#一维数组
a = v.shape #查询数组的形状
b = v.ndim  #查询数组的维度
c = v.size  #查询数组中数据个数
print(type(v))
d = v.dtype #查询数组中的元素类型,int8, int16, int32, int64: 表示不同长度的有符号整数。
# uint8, uint16, uint32, uint64: 表示不同长度的无符号整数。
# float16, float32, float64 (float 是 float64 的简写): 表示不同精度的浮点数。
# complex64, complex128 (complex 是 complex128 的简写): 表示复数,其中64和128表示复数的实部和虚部的位数。
# bool: 布尔类型,可以存储True或False。
# str_: 表示定长字符串,可以通过添加数字来指定字符串的长度,如 'S10' 表示长度为10的字符串。
# object: 表示Python对象类型,可以用来存储任意Python对象。
#二维数组
a = m.shape
b = m.ndim
c = m.size
print(type(m))
d = m.dtype
#三维数组
z.shape
z.ndim
z.size
type(z)
z.dtype

(四)数组的升维

核心功能:

  1. np.array()

    • 将列表转为NumPy数组
  2. reshape()

    • 改变数组形状,返回新数组
    • -1:自动计算该维度大小
    • 例:v.reshape(4,-1) → 4行,列数自动推算
  3. ndim

    •  查看数组维度数(如二维数组返回 2
  4. resize()

    • 直接修改原数组,无返回值
    • 例:v.resize(4,4) → 强制将原数组变为4×4

示例代码:

import numpy as nplist1 = [1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]# list1:[1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]
v = np.array(list1)# v:[1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8]
print(v)#一维变二维[-1表示自己计算]【返回一个改变后的矩阵】
# a.reshape(newshape, order='C')
# a:要重新形状的数组。
# newshape:一个整数或者元组,用于定义新的形状。
# order:可选参数,指定元素在数组中的读取顺序。'C'意味着按行,'F'意味着按列,'A'意味着原顺序,'K'意味着元素在内存中的出现顺序。
r1 = v.reshape(4,4)r1 = v.reshape(4,-1)
print(r1)
r1.ndim#一维变三维
r2 = v.reshape(1,-1,2)
print(r2)#二维变三维
r3 = r1.reshape(2,2,4)
print(r3)#resize()【不返回计算结果】【直接修改原始数组】
#r4 = v.resize(2,4)
#print(r4)
r4 = v.resize(4,4)#直接会修改原始数据到相应的维度
print(v)

(五)数组的降维

核心功能:

1. 创建 & 升维

  • np.array(list1) → 将列表转为NumPy数组(默认一维)
  • v.reshape(2,2,2) → 将数组升维为 2×2×2 的三维数组

2. 查看维度

  • v.ndim → 返回数组的维度数(此处为 3

3. 降维为二维

  • v.reshape(1,8) → 将三维数组降维为 1行8列的二维数组

4. 降维为一维

  • ravel():展平为一维(可能共享内存,修改可能影响原数组)
  • flatten():展平为一维(独立副本,修改不影响原数组)

5. 直接修改形状

  • v.shape = (2,4) → 就地修改原数组为 2×4 的二维数组

示例代码:

import numpy as nplist1 = [1,2,3,4,5,6,7,8]
v = np.array(list1)
v = v.reshape(2,2,2)
print(v)
v.ndim#将三维降到二维
r1 = v.reshape(1,8)
print(r1)
r1.ndim#将高维数据转化为一维
#ravel()
r2 = v.ravel()
print(r2)
r2.ndim#flatten()
r3 = v.flatten()#非常重要,
print(r3)
# flatten方法返回的是原数组的副本,这意味着对返回的一维数组所做的任何修改都不会影响原始的多维数组。
# ravel方法(如果可能)返回的是原始数组的视图,因此对返回的一维数组所做的修改可能会影响原始的多维数组。这是因为ravel只是改变了数组的形状和步长,而没有复制数据。#小补充shape也可以实现降维
v.shape = (2,4)#通过直接对array数据的属性进行修改。
print(v)

http://www.dtcms.com/a/327994.html

相关文章:

  • python3 undefined symbol: _Py_LegacyLocaleDetected
  • C语言结构体与内存分配:构建复杂数据结构的基石
  • 【AI驱动的语义通信:突破比特传输的下一代通信范式】
  • Git 常用命令速查表
  • 最终章【1】Epson机器人篇
  • 微服务项目中的注册中心——Nacos配置
  • 【每日一题】Day 1
  • ETCD备份
  • Flask + Vue.js 物联网数字大屏实现方案
  • 学习:JS[9]作用域+函数进阶+深入对象+实例成员和静态成员
  • 为什么神经网络的权重矩阵具有低秩特性?如何理解和解释?
  • [Robotics_py] 机器人运动模型 | `update`函数 | 微积分矩阵
  • 线性代数 · 矩阵 | 最小多项式
  • 有限元方法中的数值技术:行列式、求逆、矩阵方程
  • 企业高性能web服务器(1)
  • 腾讯云服务器账户转移操作详解
  • ip归属地批量查询脚本
  • vue2+elementUI实现园型动态步骤条小组件,带缩放功能
  • ENCOPIM, S.L. 参展 AUTO TECH China 2025 广州国际汽车技术展览会
  • 基于STC8单片机的RTC时钟实现:从原理到实践
  • Cloud Computing(云计算)和Sky Computing(天空计算)
  • 自然语言处理关键库解析和使用方法- FuzzyWuzzy
  • kafka初步介绍
  • mysql登录失败 ERROR1698
  • Java零基础笔记15(Java编程核心:Stream流、方法中的可变参数、Collections工具类)
  • Ceph对象池详解
  • 数据分析专栏记录之 -基础数学与统计知识
  • js高阶-总结精华版
  • 《软件工程导论》实验报告一 软件工程文档
  • 跨界重构规则方法论