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

关于建设网站的通知提供徐州网站建设

关于建设网站的通知,提供徐州网站建设,正确认识部门网站建设,中国建设银行e路护航网银安全组件Python NumPy 的学习笔记 0. 引言1. 为什么要用 Numpy2. 创建 Numpy 数组3. 数组的形状4. 基础操作4-1. 数组加法4-2. 数组的广播4-3. 数组的索引和切片4-4. 数组形状变换4-5. 数组的数学操作4-6. 布尔索引4-7. 数组的转置 (Transpose)4-8. 数组的平迭4-8-1. flatten()4-8-2. r… Python NumPy 的学习笔记 0. 引言1. 为什么要用 Numpy2. 创建 Numpy 数组3. 数组的形状4. 基础操作4-1. 数组加法4-2. 数组的广播4-3. 数组的索引和切片4-4. 数组形状变换4-5. 数组的数学操作4-6. 布尔索引4-7. 数组的转置 (Transpose)4-8. 数组的平迭4-8-1. flatten()4-8-2. ravel() 4-9. 数组的排序4-9-1. sort()4-9-2. argsort() 4-10. 数组的组合4-10-1. hstack()4-10-2. vstack()4-10-3. concatenate()4-10-4. append() 0. 引言 Numpy 是 Python 中一个非常强大的库它让我们可以高效地操作大量的数据。想象一下如果你有一个超级大的数字列表而你需要对这些数字进行各种复杂的计算Numpy 就是你的超级英雄 1. 为什么要用 Numpy 速度Numpy 使用了 C 语言的部分代码这让它运行得非常快。功能多Numpy 提供了很多数学函数让复杂的数学计算变得简单。省空间Numpy 使用的是数组array比 Python 自带的列表list更节省空间。 2. 创建 Numpy 数组 想象一下你有很多颗糖果要放进不同的盒子里Numpy 数组就像是那些盒子而糖果就是数据。这些盒子非常特别因为它们可以非常快地帮你数出里面有多少颗糖果甚至还可以快速告诉你哪些盒子的糖果比较甜 import numpy as np# 创建一个简单的数组 arr np.array([1, 2, 3]) print(arr)这就像是你有一个盒子你把 1、2、3 这三颗糖果放进去。 3. 数组的形状 # 创建一个 2x3 的二维数组 arr_2d np.array([[1, 2, 3], [4, 5, 6]]) print(arr_2d.shape) # 输出: (2, 3)这就像是你有一个大盒子里面有两个小盒子每个小盒子里都有三颗糖果。 4. 基础操作 4-1. 数组加法 # 创建两个数组 arr1 np.array([1, 2, 3]) arr2 np.array([4, 5, 6])# 数组加法 result arr1 arr2 print(result) # 输出: [5 7 9]这就像是你有两个盒子一个盒子里的糖果分别是 1、2、3另一个是 4、5、6。现在你把它们一一对应加起来就会得到新的盒子里面的糖果是 5、7、9。 4-2. 数组的广播 广播是 Numpy 的一个强大功能它让你可以用不同大小的盒子数组进行计算。 # 创建一个数组 arr np.array([1, 2, 3])# 数组与单个数字的加法 result arr 2 print(result) # 输出: [3 4 5]这就像是你有一个盒子里的糖果分别是 1、2、3现在你决定每颗糖果都再加两颗糖果那么盒子里的糖果就变成了 3、4、5。 再举一个示例 # 创建一个数组 arr np.array([1, 2, 3])# 用一个小盒子单个值与大盒子数组进行计算 print(arr * 2) # 输出: [2 4 6]这就像是你决定每颗糖果都变成双倍大 4-3. 数组的索引和切片 想象一下你的糖果盒子里分了很多格每一格都有一个编号。你可以很容易地找到任何一格里的糖果也可以取出一部分糖果来品尝。 # 创建一个一维数组 arr np.array([10, 20, 30, 40, 50])# 索引获取第三个元素 print(arr[2]) # 输出: 30# 切片获取第二到第四个元素 print(arr[1:4]) # 输出: [20 30 40]这就像是你直接找到第三格的糖果或者一次取出第二格到第四格的糖果来尝尝。 4-4. 数组形状变换 如果你想要重新组织你的糖果盒子比如把它们从一排变成一个矩阵Numpy 也能帮你轻松做到。 # 创建一个一维数组 arr np.arange(6) # [0 1 2 3 4 5]# 重新组织成 2x3 的数组 arr_reshape arr.reshape(2, 3) print(arr_reshape)这就像是你把 6 颗糖果重新分配到了一个有两行三列的盒子里。 4-5. 数组的数学操作 Numpy 可以让你对整个糖果盒子进行数学操作而不是一颗一颗地算。 # 创建一个数组 arr np.array([1, 2, 3, 4, 5])# 计算所有糖果的总和 print(np.sum(arr)) # 输出: 15# 计算糖果的平均数 print(np.mean(arr)) # 输出: 3.0这就像是你不需要数每一颗糖果就能知道盒子里糖果的总数和平均甜度。 4-6. 布尔索引 假设你只想要那些特别甜的糖果Numpy 可以帮你找出来。 # 创建一个数组 arr np.array([10, 20, 30, 40, 50])# 找出大于 25 的糖果 print(arr[arr 25]) # 输出: [30 40 50]这就像是你有一个魔法筛子能筛出超级甜的糖果。 4-7. 数组的转置 (Transpose) 想象一下你有一个盒子里面的糖果是按行和列排列的。如果你想把行变成列列变成行这就是转置的魔法。 # 创建一个 2x3 的数组 arr np.array([[1, 2, 3], [4, 5, 6]]) print(原始数组:) print(arr)# 使用转置 print(转置后的数组:) print(arr.T)这就像是你把盒子旋转了一下让里面的糖果排列方式完全变了个样。 4-8. 数组的平迭 NumPy 的 ravel() 和 flatten() 函数所要实现的功能是一致的都是将多维数组降为一维数组。两者的区别在于返回拷贝(copy)还是返回视图(view)numpy.flatten()返回一份拷贝对拷贝所做的修改不会影响原始矩阵而numpy.ravel()返回的是视图会影响原始矩阵。 4-8-1. flatten() flatten() 方法可以将你的糖果盒子不管它有多少层压扁变成一个一维数组这样所有的糖果都会排成一行。 # 创建一个 2x3 的数组 arr np.array([[1, 2, 3], [4, 5, 6]]) print(原始数组:) print(arr)# 使用 flatten flattened_arr arr.flatten() print(压扁后的数组:) print(flattened_arr)这就像是你把盒子里的所有糖果都倒出来排成一长排。 4-8-2. ravel() ravel() 方法和 flatten() 很像也是把多维数组变成一维但它的工作方式略有不同。ravel() 尽可能地不创建数据的副本所以它在某些情况下比 flatten() 更高效。 # 创建一个 2x3 的数组 arr np.array([[1, 2, 3], [4, 5, 6]]) print(原始数组:) print(arr)# 使用 ravel ravelled_arr arr.ravel() print(展平后的数组:) print(ravelled_arr)这就像是你把所有糖果从盒子里拿出来铺平但尽量不去动它们让它们保持原来的顺序。 4-9. 数组的排序 我们将学习如何整理和排序我们的糖果盒子使用sort()和argsort()方法以及如何通过axis参数来控制我们排序的维度。 4-9-1. sort() 想象你有一个盒子里面的糖果乱七八糟地放着。如果你想把它们按照甜度从小到大排序这就是sort()方法的用武之地。 # 创建一个一维数组 arr np.array([5, 3, 1, 4, 2]) print(原始数组:) print(arr)# 对数组进行排序 sorted_arr np.sort(arr) print(排序后的数组:) print(sorted_arr)这就像是你把盒子里的糖果按照大小顺序重新排列了一遍。 如果你的糖果盒子有多层即多维数组你可以用axis参数来指定你想按哪个方向排序。 # 创建一个 2x3 的数组 arr_2d np.array([[5, 2, 3], [1, 4, 6]]) print(原始数组:) print(arr_2d)# 沿着每一行进行排序 print(沿行排序后:) print(np.sort(arr_2d, axis1))# 沿着每一列进行排序 print(沿列排序后:) print(np.sort(arr_2d, axis0))这就像是你决定先按糖果的颜色排序然后又改变主意按糖果的大小排序。 4-9-2. argsort() argsort()方法有点特别它不直接对糖果进行排序而是告诉你如果想要排序糖果的编号应该怎样排列。 # 创建一个一维数组 arr np.array([5, 3, 1, 4, 2]) print(原始数组:) print(arr)# 使用 argsort sorted_indices np.argsort(arr) print(排序后的索引:) print(sorted_indices)# 使用排序后的索引来排序 print(使用索引排序后的数组:) print(arr[sorted_indices])这就像是你得到了一张纸上面写着如果想把糖果按甜度排序应该怎么放它们。 如果你想在多维数组中使用argsort()你也可以利用axis参数。 # 创建一个 2x3 的数组 arr_2d np.array([[5, 2, 3], [1, 4, 6]]) print(原始数组:) print(arr_2d)# 沿着每一列使用 argsort column_indices np.argsort(arr_2d, axis0) print(沿列排序后的索引:) print(column_indices)# 沿着每一行使用 argsort row_indices np.argsort(arr_2d, axis1) print(沿行排序后的索引:) print(row_indices)这就像是你得到了一张更复杂的纸上面告诉你如果想按不同的方式排序糖果它们的编号应该怎样排列。 4-10. 数组的组合 有时我们会有许多糖果盒子我们可能想要把它们堆叠起来或者连接起来以便更好地管理。Numpy为我们提供了几种方法来做到这一点hstack()、vstack()、concatenate()和append()。让我们来看看它们是如何工作的包括如何使用axis参数来控制操作的方向。 4-10-1. hstack() hstack()或称为horizontal stack水平堆叠让你可以把多个数组水平地连接起来。这种方式特别适合当你想要扩展你的糖果集合把更多的糖果并排放在一起。 # 创建两个一维数组 arr1 np.array([1, 2, 3]) arr2 np.array([4, 5, 6]) print(原始数组1:) print(arr1) print(原始数组2:) print(arr2)# 水平堆叠 hstack_arr np.hstack((arr1, arr2)) print(水平堆叠后:) print(hstack_arr)这就像是你把两盒糖果并排放置现在它们组成了一个更大的糖果展示。 如果你的糖果盒子是多维的hstack()依然能够工作把它们水平地连接起来。 # 创建两个二维数组 arr1_2d np.array([[1, 2, 3], [7, 8, 9]]) arr2_2d np.array([[4, 5, 6], [10, 11, 12]]) print(原始二维数组1:) print(arr1_2d) print(原始二维数组2:) print(arr2_2d)# 水平堆叠二维数组 hstack_arr_2d np.hstack((arr1_2d, arr2_2d)) print(水平堆叠后的二维数组:) print(hstack_arr_2d)这就像是你把两个双层糖果盒子并排放置使每层都更宽了。 通过hstack()我们可以轻松地将不同的糖果盒子水平连接起来无论是简单的一维数组还是更复杂的多维数组。 4-10-2. vstack() vstack()是vertical stack垂直堆叠的缩写。想象你有几盒糖果你想把它们堆叠起来一盒放在另一盒的上面。 # 创建两个一维数组 arr1 np.array([1, 2, 3]) arr2 np.array([4, 5, 6]) print(原始数组1:) print(arr1) print(原始数组2:) print(arr2)# 垂直堆叠 vstack_arr np.vstack((arr1, arr2)) print(垂直堆叠后:) print(vstack_arr)这就像是你把两盒糖果叠在一起现在它们变成了一个两层的大盒子。 4-10-3. concatenate() concatenate()方法可以让你选择是水平连接还是垂直连接数组。通过axis参数你可以控制连接的方向axis0代表垂直连接而axis1代表水平连接。 # 创建两个一维数组 arr1 np.array([1, 2, 3]) arr2 np.array([4, 5, 6])# 垂直连接 concat_arr_v np.concatenate((arr1, arr2), axis0) print(垂直连接后:) print(concat_arr_v)# 如果是二维数组我们可以水平连接它们 arr1_2d np.array([[1, 2, 3]]) arr2_2d np.array([[4, 5, 6]]) concat_arr_h np.concatenate((arr1_2d, arr2_2d), axis1) print(水平连接后:) print(concat_arr_h)这就像是你可以选择把两盒糖果放在一起变成一盒或者把它们并排放置。 4-10-4. append() append()方法可以将值添加到数组的末尾。默认情况下它会将所有输入平铺成一维数组但你也可以通过axis参数来指定添加的方向。 # 创建一个一维数组 arr np.array([1, 2, 3]) print(原始数组:) print(arr)# 添加元素 append_arr np.append(arr, [4, 5, 6]) print(添加元素后:) print(append_arr)# 创建两个二维数组 arr_2d_1 np.array([[1, 2, 3]]) arr_2d_2 np.array([[4, 5, 6]])# 垂直添加 append_arr_2d_v np.append(arr_2d_1, arr_2d_2, axis0) print(垂直添加后:) print(append_arr_2d_v)# 注意对于二维数组append不支持axis1的直接操作需要使用其他方法如concatenate来实现水平添加。这就像是你可以决定把新的糖果放在盒子的底部或者旁边根据你想要的方式来扩展糖果盒子。 完结
http://www.pierceye.com/news/271757/

相关文章:

  • 有一个做搞笑英语视频网站外贸建站优化
  • 苏州公司建设网站深圳品牌蛋糕店有哪些品牌排行
  • 手机网站建设视频教程、网站建设项目功能需求分析报告
  • 纸 技术支持 东莞网站建设wordpress 手机 自建站
  • 网站后台 搜索广告发布合同模板
  • 手机网站设计教程网站建设 职位
  • 外贸网站图片素材谷歌seo和百度seo区别
  • 龙华网站 建设深圳信科潍坊网站建设培训
  • 域名网站平台qq在线登录
  • 成都做网站建设公司网站建设公司销售技巧
  • 打开网站是iis7三亚最新发布
  • php外贸网站中山网站建设方案报价
  • 好网站建设公司开发方案广告传媒公司加盟
  • 郑州膏药网站建设石家庄seo管理
  • 做国外产品描述的网站营销wordpress
  • 服务器2003怎么做网站枣庄网站建设电话
  • 南京网站建设一条龙汶上网站制作
  • 黑龙江微信网站开发郑州热门网络推广免费咨询
  • 深圳坪山站永久免费linux服务器
  • 东莞网站建议ipv6在家做网站
  • 政务网站源码1688电脑网页版
  • 大连企业网站网站rar文件
  • 揭阳东莞网站建设手机网站分享代码
  • 网站设计风格分析wordpress 用户介绍
  • 中国教育网站官网wordpress 自定义循环
  • 中国婚恋网站排名苏州网站建设设计公司哪家好
  • 微软雅黑做网站是否侵权杭州标志设计公司
  • 个人网站如何制作教程网站通栏广告设计
  • 网站建设与维护要求wordpress 常数函数
  • 网站开发u盘128够吗手机网站开发学习