【总结】Numpy2

news2025/1/11 20:39:48

Numpy

1. 数组和数的运算

array1 = np.arange(1,10)
array1 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
array1 + 10 # array([11, 12, 13, 14, 15, 16, 17, 18, 19])
array1 - 10 # array([-9, -8, -7, -6, -5, -4, -3, -2, -1])
array1 * 10 # array([10, 20, 30, 40, 50, 60, 70, 80, 90])
array1 ** 10
array1 > 3 # array([False, False, False,  True,  True,  True,  True,  True,  True])

2. 数组和数组的运算

array2 = np.array([10,10,10,20,20,20,30,30,30])
array2 # array([10, 10, 10, 20, 20, 20, 30, 30, 30])
array2.shape # (9,)
array1 + array2 # array([11, 12, 13, 24, 25, 26, 37, 38, 39])
array1 * array2  # array([ 10,  20,  30,  80, 100, 120, 210, 240, 270])
array1 > array2 # array([False, False, False, False, False, False, False, False, False])
array1 ** array2

array3 = np.arange(1,10).reshape(3,3)
array3
'''
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
'''
array3.shape # (3, 3)
array4 = array2.reshape(3,3)
array4
'''
array([[10, 10, 10],
       [20, 20, 20],
       [30, 30, 30]])
'''
array4 / array3
array4 // array3

2.1 广播机制

如果参与运算的两个数组形状(shape)不一样,numpy会使用广播机制使形状一样 广播机制条件(二选一):

  • 两个数组形状虽然不一样,但是后缘维度(shape属性从后往前看对应的部分)相同
  • 两个数组形状不一样且后缘维度不相同,但是其中有一方在某个轴上的长度(size)为1

请添加图片描述
请添加图片描述

请添加图片描述

2.2 矩阵乘法

array9
'''
array([[1, 2],
       [3, 4],
       [5, 6]])
'''
array10
'''
array([[2, 8, 6, 5],
       [7, 2, 2, 3]])
'''
array9 @ array10
np.matmul(array9,array10)
'''
array([[16, 12, 10, 11],
       [34, 32, 26, 27],
       [52, 52, 42, 43]])
'''


3.Numpy操作数组的函数

x = np.array([1,2,-3,0])
y = np.array([4,0,0,0])
z = x / y
z # array([0.25,  inf, -inf,  nan])

3.1 isinf

# 检测是否有无穷大值
np.isinf(z) # array([False,  True,  True, False])
# nan:not a number
array11 = np.array([10,np.nan,20,30])
array11  # array([10., nan, 20., 30.])

3.2 isnan:判断空值

# 判断空值
np.isnan(array11) # array([False,  True, False, False])
# 排除空值
array11[~np.isnan(array11)] # array([10., 20., 30.])

3.3 矩阵点乘:dot

𝐴⋅𝐵=|𝐴||𝐵|𝐶𝑂𝑆𝜃

𝐶𝑂𝑆𝜃=𝐴⋅𝐵|𝐴||𝐵|

u = np.array([3,4])
v = np.array([5,1])
# 计算夹角余弦
# 模:np.linalg.norm(u)
np.dot(u,v) / np.linalg.norm(u) / np.linalg.norm(v)
# 计算角度
# 弧长:np.arccos
# 角度:np.rad2deg
np.rad2deg(np.arccos(np.dot(u,v) / np.linalg.norm(u) / np.linalg.norm(v)))
# 说明:夹角越小说明两个向量相似度越高

3.4 扁平化:flatten、ravel

array9
'''
array([[1, 2],
       [3, 4],
       [5, 6]])
'''
# 扁平化
array9.flatten() # array([1, 2, 3, 4, 5, 6])
array9.reshape(-1) # array([1, 2, 3, 4, 5, 6])

# 扁平化(性能更好)
array9.ravel() # array([1, 2, 3, 4, 5, 6])

3.5 in1d

array10 = np.array([22,44,55])
array11 = np.array([[66,44,22],[33,44,77]])
np.in1d(array10,array11)
'''
array([ True,  True, False])
'''

3.6 交集,并集

𝐴∩𝐵元素的个数 / 𝐴∪𝐵元素的个数

  • 交集:np.intersect1d
  • 并集:np.union1d
user_a = np.array(['A','B','E','F','G','X','Y'])
user_b = np.array(['E','H','J','K','P','Q','X'])
user_c = np.array(['C','B','E','F','G','X','Y'])
np.intersect1d(user_a,user_b).size / np.union1d(user_a,user_b).size
np.intersect1d(user_a,user_c).size / np.union1d(user_a,user_c).size
np.intersect1d(user_b,user_c).size / np.union1d(user_b,user_c).size

3.7 拷贝

用copy拷贝后再修改,不会改变原数组

3.8 堆叠、拆分

  • hstackvstackstackconcatenatevsplithsplit

1)堆叠


array16 = np.array([[1,1,1],[2,2,2],[3,3,3]])
array17 = np.array([[4,4,4],[5,5,5],[6,6,6]])
# 1) hstack
np.hstack((array16,array17))
'''
array([[1, 1, 1, 4, 4, 4],
       [2, 2, 2, 5, 5, 5],
       [3, 3, 3, 6, 6, 6]])
'''

# 2) vstack
np.vstack((array16,array17))
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5],
       [6, 6, 6]])
'''
# 3) stack
array15 = np.stack((array16,array17))
array15
# axis=0
'''
array([[[1, 1, 1],
        [2, 2, 2],
        [3, 3, 3]],

       [[4, 4, 4],
        [5, 5, 5],
        [6, 6, 6]]])
'''
np.stack((array16,array17), axis=1)
'''
array([[[1, 1, 1],
        [4, 4, 4]],

       [[2, 2, 2],
        [5, 5, 5]],

       [[3, 3, 3],
        [6, 6, 6]]])
'''

2)拆分

array18 = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[6,6,6]])
array18
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5],
       [6, 6, 6]])
'''
# 垂直方向拆分(行)
np.vsplit(array18,3)
'''
[array([[1, 1, 1],
        [2, 2, 2]]),
 array([[3, 3, 3],
        [4, 4, 4]]),
 array([[5, 5, 5],
        [6, 6, 6]])]
'''

# 水平方向拆分(列)
np.hsplit(array18,3)
'''
[array([[1],
        [2],
        [3],
        [4],
        [5],
        [6]]),
 array([[1],
        [2],
        [3],
        [4],
        [5],
        [6]]),
 array([[1],
        [2],
        [3],
        [4],
        [5],
        [6]])]
'''

3)拼接

# 拼接(默认沿着0轴拼接)
np.concatenate((array16,array17))
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5],
       [6, 6, 6]])
'''

np.concatenate((array16,array17),axis=1)
'''
array([[1, 1, 1, 4, 4, 4],
       [2, 2, 2, 5, 5, 5],
       [3, 3, 3, 6, 6, 6]])
'''

3.9 增加:append、insert

array16
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])
'''
np.append(array16,100) # array([  1,   1,   1,   2,   2,   2,   3,   3,   3, 100])

np.append(array16,[1,2,3]) # array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3])

np.insert(array16,0,100) # array([100,   1,   1,   1,   2,   2,   2,   3,   3,   3])

np.insert(array16,1,[5,6,7])
# array([1, 5, 6, 7, 1, 1, 2, 2, 2, 3, 3, 3])

3.10 argwhere:查找非0元素索引

array16
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])
'''
np.argwhere(array16)
'''
array([[0, 0],
       [0, 1],
       [0, 2],
       [1, 0],
       [1, 1],
       [1, 2],
       [2, 0],
       [2, 1],
       [2, 2]],
'''

3.11 extract、select、where

array21 = np.arange(1,10)
array21
# array([1, 2, 3, 4, 5, 6, 7, 8, 9])

# 根据条件抽取数据(相当于布尔索引)
np.extract(array21 > 5,array21) # array([6, 7, 8, 9])

# np.select(condlist, choicelist, default=0)
# 根据条件处理数据得到新的数组数据
np.select([array21 < 3,array21>5],[array21+10,array21**2])
# array([11, 12,  0,  0,  0, 36, 49, 64, 81])

# 给出一个条件将满足不满足条件的数据粉被处理得到新的数组对象
np.where(array21 > 5, array21 + 10, array21 ** 2)
# array([ 1,  4,  9, 16, 25, 16, 17, 18, 19])

3.12 filp:翻转

np.flip(array21,axis=0)
# array([9, 8, 7, 6, 5, 4, 3, 2, 1])

array19 = np.stack((array16,array17), axis=1)
array19
'''
array([[[1, 1, 1],
        [4, 4, 4]],

       [[2, 2, 2],
        [5, 5, 5]],

       [[3, 3, 3],
        [6, 6, 6]]])
'''

np.flip(array19,axis=1)
'''
array([[[4, 4, 4],
        [1, 1, 1]],

       [[5, 5, 5],
        [2, 2, 2]],

       [[6, 6, 6],
        [3, 3, 3]]])
'''

np.flip(array19,axis=0)
'''
array([[[3, 3, 3],
        [6, 6, 6]],

       [[2, 2, 2],
        [5, 5, 5]],

       [[1, 1, 1],
        [4, 4, 4]]])
'''

3.13 roll

  • 沿着指定轴对数组移位
array21 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.roll(array21,2,axis=0)
# array([8, 9, 1, 2, 3, 4, 5, 6, 7])
array19
'''
array([[[1, 1, 1],
        [4, 4, 4]],

       [[2, 2, 2],
        [5, 5, 5]],

       [[3, 3, 3],
        [6, 6, 6]]])
'''
np.roll(array19,2,axis=0)
'''
array([[[2, 2, 2],
        [5, 5, 5]],

       [[3, 3, 3],
        [6, 6, 6]],

       [[1, 1, 1],
        [4, 4, 4]]])
'''
np.roll(array19,1,axis=1)
'''
array([[[4, 4, 4],
        [1, 1, 1]],

       [[5, 5, 5],
        [2, 2, 2]],

       [[6, 6, 6],
        [3, 3, 3]]])
'''

3.14 repeat、tile:重复

array21 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
# 重复创建新的数组对象
np.repeat(array21,3)
# array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9])
np.tile(array21,3)
# array([1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9])

3.15 resize:重新调整数组大小

array18
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5],
       [6, 6, 6]])
'''
np.resize(array18,(3,4))
'''
array([[1, 1, 1, 2],
       [2, 2, 3, 3],
       [3, 4, 4, 4]])
'''
np.resize(array18,(8,4))
'''
array([[1, 1, 1, 2],
       [2, 2, 3, 3],
       [3, 4, 4, 4],
       [5, 5, 5, 6],
       [6, 6, 1, 1],
       [1, 2, 2, 2],
       [3, 3, 3, 4],
       [4, 4, 5, 5]])
'''

3.16 put、place

  • 将满足条件的元素/指定位置的元素替换成指定值
array22 = np.copy(array21)
array22 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.put(array22, [0,4,6], [100,200])
array22 # array([100,   2,   3,   4, 200,   6, 100,   8,   9])
np.place(array22, array22 < 100, [33,66,77])
array22 # array([100,  33,  66,  77, 200,  33, 100,  66,  77])
   [3, 4, 4, 4],
   [5, 5, 5, 6],
   [6, 6, 1, 1],
   [1, 2, 2, 2],
   [3, 3, 3, 4],
   [4, 4, 5, 5]])

‘’’


### 3.16 put、place

+ 将满足条件的元素/指定位置的元素替换成指定值

```python
array22 = np.copy(array21)
array22 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.put(array22, [0,4,6], [100,200])
array22 # array([100,   2,   3,   4, 200,   6, 100,   8,   9])
np.place(array22, array22 < 100, [33,66,77])
array22 # array([100,  33,  66,  77, 200,  33, 100,  66,  77])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/547913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flutter:如何在Android中实现串口通信调试

本文介绍如何通过flutter_libserialport插件在Flutter中实现串口通信调试。 1、引入依赖 在flutter工程的pubspec.yaml文件中引入flutter_libserialport依赖&#xff1a; dependencies:flutter_libserialport: ^0.3.0 2、导入import依赖包 在dart代码中import导入flutter_li…

快手国际化 后端开发面经二面

目录 1.Redis用的什么数据类型2.Hash底层结构3.JVM垃圾判别阶段算法4.MySQL索引模型5.为什么用B树6.联合索引在B树如何构造的7.覆盖索引知道吗 1.Redis用的什么数据类型 1.String(字符类型) 2.Hash(散列类型) 3.List(列表类型) 4.Set(集合类型) 5.SortedSet(有序集合类型&…

设计模式 单例模式(创建型)

一、前言 学习设计模式我们关注的是什么&#xff0c;如何实现么&#xff1f;是也不是。我认为比了解如何实现设计模式更重要的是这些设计模式的应用场景&#xff0c;什么场景下我们该用这种设计模式&#xff1b;以及这些设计模式所包含的思想&#xff0c;最终帮助我们把代码写…

继承 + 多态 + final + 权限修饰符

目录 继承 多态 final 权限修饰符 继承 继承定义&#xff1a; 可以让类跟类之间产生子父的关系继承的好处 可以把多个子类中重复的代码抽取到父类中&#xff0c;子类可以直接使用&#xff0c;减少代码几余&#xff0c;提高代码的复用性子类继承内容 非私有private构造方法…

#机器学习--深度学习中的正则化

#机器学习--深度学习中的正则化 引言1、参数范数惩罚2、 L 2 L^{2} L2 正则化3、 L 1 L^{1} L1 正则化4、显式约束和重投影5、参数绑定和参数共享6、Bagging7、Dropout 引言 本系列博客旨在为机器学习(深度学习)提供数学理论基础。因此内容更为精简&#xff0c;适合二次学习的…

uniapp实现条码扫描 可开闪光灯,原生H5调用,不需要任何sdk。

主要思路 使用QuaggaJs这个库。调用摄像头使用的 navigator.mediaDevices.getUserMedia 这个H5的api。通过 video 和 canvas 把摄像头获取到的数据展现到页面上&#xff0c;同时调用监听Quagga解析。 获取设备摄像头权限,用于后续开启摄像头。创建video元素显示摄像头画面,和ca…

AcWing算法提高课-1.3.10混合背包问题

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 有 N N N 种物品和一个容量是 V V V 的背包。 物品一共有三类&#xff1a; 第一类物品只能用1次&#xff08;01背包&#xff0…

opencv相机标定

当你把摄像机放在一个特定的位置&#xff0c;在它的后面放一个目标图像&#xff0c;或者是把摄像机放到某个物体上&#xff0c;摄像机周围的物体是什么形状&#xff0c;你需要知道这些信息。 当你在计算机上处理图像时&#xff0c;会使用以下三个参数&#xff1a; 1.像素坐标&a…

软件测试5年了,薪资25K,我还怕00后卷吗?

前言 沅哥在这个行业爬摸滚打5年了&#xff0c;从最开始点点点的功能测试到现在到现在成为高级测试&#xff0c;工资也翻了几倍&#xff0c;到了25k。他和我说&#xff0c;最开始他是想躺平的&#xff0c;后来也是被迫卷的&#xff0c;但好在这个结果他很满意。 之所以改变的…

一文3000字从0到1使用Selenium进行自动化测试

对于很多刚入门的测试新手来说&#xff0c;大家都将自动化测试作为自己职业发展的一个主要阶段。可是&#xff0c;在成为一名合格的自动化测试工程师之前&#xff0c;我们不仅要掌握相应的理论知识&#xff0c;还要进行大量的实践&#xff0c;积累足够的经验&#xff0c;以便快…

【重新定义matlab强大系列七】利用matlab函数ischange查找数据变化点

&#x1f517; 运行环境&#xff1a;matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

为了入职字节测试岗准备半年,上岸拿个30K应该不算高吧?

历时近半年的面试终于告一段落&#xff0c;终于有时间整理下自己这次的换工作心得&#xff0c;分享给大家。 面试经历 我的基本情况是这样&#xff1a;中下等 985 学校本科毕业&#xff0c;非计算机专业&#xff0c;在北京工作五年&#xff0c;之前一直在中小私企、国企工作。…

程序语言易错题

程序语言易错题 包含8个成员的开发小组的沟通路径最多有&#xff08;&#xff09;条。 A、28 B、32 C、56 D、64 解析 软件开发小组的沟通路径受到小组组织形式和规模的影响。若任意小组成员之间均可能有沟通路径&#xff0c;则可用完全连通图来对开发小组的沟通路径建模&#…

Anaconda-labelimg的使用

文章目录 一、创建Anaco的虚拟环境并激活二、下载labelimg以及使用1.下载2.使用 在这里我是创建了一个虚拟环境&#xff0c;虚拟环境名字为labelimg 之后将labelimg下载到该虚拟环境中 一、创建Anaco的虚拟环境并激活 conda create -n labelimg conda activate labelimg二、下…

Smoothieware_best-for-pnp 工具链的升级尝试

文章目录 Smoothieware_best-for-pnp 工具链的升级尝试概述实验工具链安装的思路更换工具链的工作备注END Smoothieware_best-for-pnp 工具链的升级尝试 概述 正在迁移Smoothieware_best-for-pnp到MCUXPresso的失败实验中徘徊. 现在已知2者的工具链版本是不一样的. 通过2进制…

MAC免密登录服务器

文章目录 1.Mac本机打开终端生成公私钥2.找打刚才生成的公钥3.上传公钥到远程 Linux 服务器4.远程登录到Linux系统服务器里面执行如下操作5.设置后在退出终端,输入如下命令即可免密登录6. 禁止 Linux 使用账号密码登录 1.Mac本机打开终端生成公私钥 输入ssh-keygen&#xff0c…

python获取某电商平台口红数据并制作词云

目录标题 前言开发环境:模块使用数据来源分析代码展示获取数据制作词云 尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 开发环境: Python 3.8 Pycharm 模块使用 requests jieba 结巴分词 wordcloud 词云 第三方模块安装&#xff1a; win R 输…

Apache Kafka - 重识Kafka

文章目录 概述一、Kafka的概念二、Kafka的特点三、Kafka的使用场景导图 概述 Kafka是一个高性能、分布式的消息队列系统&#xff0c;它的出现为大规模的数据处理提供了一种可靠、快速的解决方案。我们先初步了解Kafka的概念、特点和使用场景。 一、Kafka的概念 Kafka是由Apac…

《设计模式》状态模式

《设计模式》状态模式 定义&#xff1a; 状态模式也称为状态机模式&#xff0c;允许对象在内部状态发生改变时改变它的行为&#xff0c;对象看起来好像修改了它的类。属于行为型模式。 状态模式的角色组成&#xff1a; State(抽象状态类)&#xff1a;定义一个接口用来封装与…

文本三剑客正则表达式3

文章目录 文本三剑客&正则表达式31 awk工作原理2 awk的基本格式及其内置变量2.1 基本格式2.2 内置变量2.3 示例2.3.1 直接打印所有内容2.3.2 取每一行的第一列2.3.3 打印行号&#xff0c;及所有内容2.3.4 打印第三行2.3.5 打印2-4行2.3.6 打印第2行和第4行2.3.7 用正则表达…