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

机器学习3--numpy

Numpy

  • 一、numpy是什么?
  • 二、N维数组
  • 三、数组基本操作
  • 四、数组的运算

一、numpy是什么?

  1. numpy是一个开源的python科学计算库,用于处理任意维度的数组。
  2. numpy用ndarray处理多维数组。

import numpy as np
np.array创建数组

  1. 机器学习数据量很大,ndarray速度快。
  2. ndarray的优势:
    • 内存块风格,一体式存储,数据类型一样(存储数据地址连续,直接存取,不需要找地址);
    • 支持并行化运算;
    • 效率高于python

二、N维数组

数组属性

.shape
.ndim 数组维数
.size 元素数量
.itemsize 元素字节大小
.dtype 元素类型

import numpy as np
a = np.array(["python","hello","i"],dtype = np.string_)
#指定类型

三、数组基本操作

  1. 生成数组

(1)0,1数组,固定范围数组

import numpy as np
#生成0、1数组
ones = np.ones([4,8])
np.zeros_like(ones)
#生成现有数组
a = np.array([[1,2,3],[4,5,6]])
a1 = np.array(a)#深拷贝
a2 = np.asarray(a)#浅拷贝
a[0,0]=1000###a1不变;a2改变
#生成固定范围数组
np.linspace(0,100,10)#等差数组,指定差值
np.arange(10,50,2)#等差数组,指定步长
np.logspace(0,2,3)#10的次方

(2) 正态分布

import numpy as np
import matplotlib.pyplot as plt
#生成正太分布
x1 = np.random.normal(1.75,1,1000)
plt.figure(figsize=(20,8),dpi=100)
plt.hist(x1,100)
plt.show()

(3) 均匀分布

import numpy as np
import matplotlib.pyplot as plt
#生成正太分布
x1 = np.random.uniform(-1,1,1000)
plt.figure(figsize=(20,8),dpi=100)
plt.hist(x2,100)
plt.show()
  1. 数组的索引、切片
    对象[:,:] 先行后列

  2. 数组的形状修改
    (1)reshape 展成一行,重新排列
    (2)resize
    (3)T 转置

  3. 数组的类型修改

ndarray.astype(type)
ndarray.tostring()

  1. 数组的去重

np.unique()

四、数组的运算

  1. 逻辑运算
    大于小于和赋值。
    大于号可以直接判断数组里的值,赋值在判断结果说赋值
#生成10名同学,5门功课的数据
score=np.random.randint(40,100,(10,5))
#取出最后4名同学的成绩,
用于逻辑判断
test_score = score[6:,0:5]
#逻辑判断,如果成绩大于60就标记为True否则为False
test_score > 60
array([[True,True,True,False,True],
[True,True,True,False,True],
[True,True,False,False,True],
[False,True,True,True,True]])
#B00L赋值,将满足条件的设置为指定的值-布尔索引
test_score[test_score > 60] = 1
test_score
array([1,1,1,59,1],
[1,1,1,59,1],
[1,1,44,44,1],
[59,1,1,1,1]])
  1. 通用函数
    np.all, np.any

#判断前两名同学的成绩[0:2,:]是否全及格
np.all(score[0:2,:]>60)
False
#判断前两名同学的成绩[0:2,:]是否有大于90分的
np.any(scoret[0:2,:]>90)
True

  1. 数组与数值运算,对数组中所有值都与数值运算;注意,对列表运算,乘积会复制粘贴
  2. 数组与数组运算
    广播机制:数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值一样,这样,就可以进行矢量化运算了。下面通过一个例子进行说明:
arr1=np.array([[0],[1],[2],[3])
arr1.shape
#(4,1)
arr2 np.array([1,2,3])
arr2.shape
#(3,)
arrl+arr2
#结果是
array([[1,2,3],
[2,3,4],
[3,4,5],
[4,5,6])

广播机制实现了时两个或两个以上数组的运算,即使这些数组的shape不是完全相同的,只需要满足如下任意一个条件即可。

  • 数组的某一维度等长。
  • 其中一个数组的某一维度为1。

广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数或者运算符进行运算。


http://www.kler.cn/news/330562.html

相关文章:

  • rabbitMq------连接管理模块
  • 【重学 MySQL】五十三、MySQL数据类型概述和字符集设置
  • LLM | Ollama WebUI 安装使用(pip 版)
  • 【CSS/HTML】实现可扩展性的页面布局
  • 2、.Net 前端框架:OpenAuth.Net - .Net宣传系列文章
  • PostgreSQL的学习心得和知识总结(一百五十二)|transaction_timeout:达到事务超时时终止会话
  • Redis中一些其他的数据类型渐进式遍历
  • FreeRTOS篇7:队列
  • 《程序猿之Redis缓存实战 · Redis 与数据库一致性》
  • 【大数据】大数据运维方案浅析总结
  • Vue.js组件开发详解
  • 【无人机设计与控制】Multi-UAV|多无人机多场景路径规划算法MATLAB
  • CSS常用属性、属性值
  • 云中红队系列 | 使用 Azure FrontDoor 混淆 C2 基础设施
  • 【艾思科蓝】Python数据分析与可视化实战:从入门到进阶
  • AI驱动的Java开发框架:Spring AI Alibaba实战部署教程
  • 滚雪球学MySQL[4.3讲]:MySQL表设计与优化:正规化、表分区与性能调优详解
  • 【ChatGPT】面向软件开发的提示词
  • Java - LeetCode面试经典150题 - 区间 (三)
  • pdf处理2