当前位置: 首页 > 编程日记 > 正文

Numpy入门教程:02. 索引、切片与迭代

背景

什么是 NumPy 呢?

NumPy 这个词来源于两个单词 – NumericalPython。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景:

  • 执行各种数学任务,如:数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于 Python 的 MATLAB 的快速替代。
  • 计算机中的图像表示为多维数字数组。NumPy 提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。
  • 在编写机器学习算法时,需要对矩阵进行各种数值计算。如:矩阵乘法、求逆、换位、加法等。NumPy 数组用于存储训练数据和机器学习模型的参数。

副本与视图

在 Numpy 中,尤其是在做数组运算或数组操作时,返回结果不是数组的 副本 就是 视图

在 Numpy 中,所有赋值运算不会为数组和数组中的任何元素创建副本。

  • numpy.ndarray.copy() 函数创建一个副本。 对副本数据进行修改,不会影响到原始数据,它们物理内存不在同一位置。

【例】

import numpy as npx = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = x
y[0] = -1
print(x)
# [-1  2  3  4  5  6  7  8]
print(y)
# [-1  2  3  4  5  6  7  8]x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = x.copy()
y[0] = -1
print(x)
# [1 2 3 4 5 6 7 8]
print(y)
# [-1  2  3  4  5  6  7  8]

【例】数组切片操作返回的对象只是原数组的视图。

import numpy as npx = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])
y = x
y[::2, :3:2] = -1
print(x)
# [[-1 12 -1 14 15]
#  [16 17 18 19 20]
#  [-1 22 -1 24 25]
#  [26 27 28 29 30]
#  [-1 32 -1 34 35]]
print(y)
# [[-1 12 -1 14 15]
#  [16 17 18 19 20]
#  [-1 22 -1 24 25]
#  [26 27 28 29 30]
#  [-1 32 -1 34 35]]x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])
y = x.copy()
y[::2, :3:2] = -1
print(x)
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [21 22 23 24 25]
#  [26 27 28 29 30]
#  [31 32 33 34 35]]
print(y)
# [[-1 12 -1 14 15]
#  [16 17 18 19 20]
#  [-1 22 -1 24 25]
#  [26 27 28 29 30]
#  [-1 32 -1 34 35]]

索引与切片

数组索引机制指的是用方括号([])加序号的形式引用单个数组元素,它的用处很多,比如抽取元素,选取数组的几个元素,甚至为其赋一个新值。

整数索引

【例】要获取数组的单个元素,指定元素的索引即可。

import numpy as npx = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(x[2])  # 3x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])
print(x[2])  # [21 22 23 24 25]
print(x[2][1])  # 22
print(x[2, 1])  # 22

切片索引

切片操作是指抽取数组的一部分元素生成新数组。对 python 列表进行切片操作得到的数组是原数组的副本,而对 Numpy 数据进行切片操作得到的数组则是指向相同缓冲区的视图

如果想抽取(或查看)数组的一部分,必须使用切片语法,也就是,把几个用冒号( start:stop:step )隔开的数字置于方括号内。

为了更好地理解切片语法,还应该了解不明确指明起始和结束位置的情况。如省去第一个数字,numpy 会认为第一个数字是0;如省去第二个数字,numpy 则会认为第二个数字是数组的最大索引值;如省去最后一个数字,它将会被理解为1,也就是抽取所有元素而不再考虑间隔。

【例】对一维数组的切片

import numpy as npx = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(x[0:2])  # [1 2]
print(x[1:5:2])  # [2 4]
print(x[2:])  # [3 4 5 6 7 8]
print(x[:2])  # [1 2]
print(x[-2:])  # [7 8]
print(x[:-2])  # [1 2 3 4 5 6]
print(x[:])  # [1 2 3 4 5 6 7 8]

【例】对二维数组切片

import numpy as npx = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])
print(x[0:2])
# [[11 12 13 14 15]
#  [16 17 18 19 20]]print(x[1:5:2])
# [[16 17 18 19 20]
#  [26 27 28 29 30]]print(x[2:])
# [[21 22 23 24 25]
#  [26 27 28 29 30]
#  [31 32 33 34 35]]print(x[:2])
# [[11 12 13 14 15]
#  [16 17 18 19 20]]print(x[-2:])
# [[26 27 28 29 30]
#  [31 32 33 34 35]]print(x[:-2])
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [21 22 23 24 25]]print(x[:])
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [21 22 23 24 25]
#  [26 27 28 29 30]
#  [31 32 33 34 35]]print(x[2, :])  # [21 22 23 24 25]
print(x[:, 2])  # [13 18 23 28 33]
print(x[0, 1:4])  # [12 13 14]
print(x[1:4, 0])  # [16 21 26]
print(x[1:3, 2:4])
# [[18 19]
#  [23 24]]print(x[:, :])
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [21 22 23 24 25]
#  [26 27 28 29 30]
#  [31 32 33 34 35]]print(x[::2, ::2])
# [[11 13 15]
#  [21 23 25]
#  [31 33 35]]

通过对每个以逗号分隔的维度执行单独的切片,你可以对多维数组进行切片。因此,对于二维数组,我们的第一片定义了行的切片,第二片定义了列的切片。

【例】

import numpy as npx = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])
print(x)
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [21 22 23 24 25]
#  [26 27 28 29 30]
#  [31 32 33 34 35]]x[0::2, 1::3] = 0
print(x)
# [[11  0 13 14  0]
#  [16 17 18 19 20]
#  [21  0 23 24  0]
#  [26 27 28 29 30]
#  [31  0 33 34  0]]

dots 索引

NumPy 允许使用...表示足够多的冒号来构建完整的索引列表。

比如,如果 x 是 5 维数组:

  • x[1,2,...] 等于 x[1,2,:,:,:]
  • x[...,3] 等于 x[:,:,:,:,3]
  • x[4,...,5,:] 等于 x[4,:,:,5,:]

【例】

import numpy as npx = np.random.randint(1, 100, [2, 2, 3])
print(x)
# [[[ 5 64 75]
#   [57 27 31]]
# 
#  [[68 85  3]
#   [93 26 25]]]print(x[1, ...])
# [[68 85  3]
#  [93 26 25]]print(x[..., 2])
# [[75 31]
#  [ 3 25]]

整数数组索引

【例】方括号内传入多个索引值,可以同时选择多个元素。

import numpy as npx = np.array([1, 2, 3, 4, 5, 6, 7, 8])
r = [0, 1, 2]
print(x[r])
# [1 2 3]r = [0, 1, -1]
print(x[r])
# [1 2 8]x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])r = [0, 1, 2]
print(x[r])
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [21 22 23 24 25]]r = [0, 1, -1]
print(x[r])# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [31 32 33 34 35]]r = [0, 1, 2]
c = [2, 3, 4]
y = x[r, c]
print(y)
# [13 19 25]r = np.array([0, 1, 2])
c = np.array([2, 3, 4])
y = x[r, c]
print(y)
# [13 19 25]

【例】

import numpy as npx = np.array([1, 2, 3, 4, 5, 6, 7, 8])
r = np.array([[0, 1], [3, 4]])
print(x[r])
# [[1 2]
#  [4 5]]x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])r = np.array([[0, 1], [3, 4]])
print(x[r])
# [[[11 12 13 14 15]
#   [16 17 18 19 20]]
#
#  [[26 27 28 29 30]
#   [31 32 33 34 35]]]# 获取了 5X5 数组中的四个角的元素。
# 行索引是 [0,0] 和 [4,4],而列索引是 [0,4] 和 [0,4]。
r = np.array([[0, 0], [4, 4]])
c = np.array([[0, 4], [0, 4]])
y = x[r, c]
print(y)
# [[11 15]
#  [31 35]]

【例】可以借助切片:与整数数组组合。

import numpy as npx = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])y = x[0:3, [1, 2, 2]]
print(y)
# [[12 13 13]
#  [17 18 18]
#  [22 23 23]]

布尔索引

我们可以通过一个布尔数组来索引目标数组。

【例】

import numpy as npx = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = x > 5
print(y)
# [False False False False False  True  True  True]
print(x[x > 5])
# [6 7 8]x = np.array([np.nan, 1, 2, np.nan, 3, 4, 5])
y = np.logical_not(np.isnan(x))
print(x[y])
# [1. 2. 3. 4. 5.]x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])
y = x > 25
print(y)
# [[False False False False False]
#  [False False False False False]
#  [False False False False False]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]]
print(x[x > 25])
# [26 27 28 29 30 31 32 33 34 35]

【例】

import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 2 * np.pi, 50)
y = np.sin(x)
print(len(x))  # 50
plt.plot(x, y)mask = y >= 0
print(len(x[mask]))  # 25
print(mask)
'''
[ True  True  True  True  True  True  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True  True  TrueTrue False False False False False False False False False False FalseFalse False False False False False False False False False False FalseFalse False]
'''
plt.plot(x[mask], y[mask], 'bo')mask = np.logical_and(y >= 0, x <= np.pi / 2)
print(mask)
'''
[ True  True  True  True  True  True  True  True  True  True  True  TrueTrue False False False False False False False False False False FalseFalse False False False False False False False False False False FalseFalse False False False False False False False False False False FalseFalse False]
'''plt.plot(x[mask], y[mask], 'go')
plt.show()

我们利用这些条件来选择图上的不同点。蓝色点(在图中还包括绿点,但绿点掩盖了蓝色点),显示值 大于0 的所有点。绿色点表示值 大于0 且 小于0.5π 的所有点。


数组迭代

除了for循环,Numpy 还提供另外一种更为优雅的遍历方法。

  • apply_along_axis(func1d, axis, arr) Apply a function to 1-D slices along the given axis.

【例】

import numpy as npx = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])y = np.apply_along_axis(np.sum, 0, x)
print(y)  # [105 110 115 120 125]
y = np.apply_along_axis(np.sum, 1, x)
print(y)  # [ 65  90 115 140 165]y = np.apply_along_axis(np.mean, 0, x)
print(y)  # [21. 22. 23. 24. 25.]
y = np.apply_along_axis(np.mean, 1, x)
print(y)  # [13. 18. 23. 28. 33.]def my_func(x):return (x[0] + x[-1]) * 0.5y = np.apply_along_axis(my_func, 0, x)
print(y)  # [21. 22. 23. 24. 25.]
y = np.apply_along_axis(my_func, 1, x)
print(y)  # [13. 18. 23. 28. 33.]

当前活动


我是 终身学习者“老马”,一个长期践行“结伴式学习”理念的 中年大叔

我崇尚分享,渴望成长,于2010年创立了“LSGO软件技术团队”,并加入了国内著名的开源组织“Datawhale”,也是“Dre@mtech”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。

愿我们一起学习,一起进步,相互陪伴,共同成长。

后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:

相关文章:

php中OR与|| AND与的区别

本身没有区别&#xff0c;习惯问题 &#xff0c;但是有时候牵涉到运算符优先级的问题&#xff0c;结果会不同&#xff0c;记录下。例如&#xff1a;$p 6 or 0;var_dump($p);//int(6)$p 6 || 0;var_dump($p);//bool(true)$p 6 and 0;var_dump($p); //int(6) $p 6 &&…

beego数据输出

概览直接输出字符串模板数据输出 静态模板数据输出动态模板数据输出json格式数据输出xml格式数据输出jsonp调用概览 直接输出字符串 通过beego.Controller.Ctx.WriteString()方法可以直接向http response body中输出字符串 beego中的函数定义如下&#xff1a; // WriteString W…

缓存和web缓存分别是什么?

什么是缓存? 缓存(cache)&#xff0c;原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器&#xff0c;通常它不像系统主存那样使用DRAM技术&#xff0c;而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。 什么是web缓存…

【Python】12、字典的实现

一、字典的实现 dic 可以使用list来实现 i&#xff08;索引&#xff09; hash(key) % solt(槽位数) 此时i重复了怎么办&#xff08;hash冲突&#xff09;&#xff1f; 1、拉链法 每个槽位上拉一个List&#xff0c;就是拉链法 1234567891011121314151617181920212223242526272…

Numpy入门教程:03.数组操作

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

13个JavaScript图表图形绘制插件

由于绘制矢量图的不同技术愈发成熟以及现代浏览器所具备的更强大的计算能力等原因&#xff0c;目前网上出现了越来越多免费 的JavaScript图表和图形绘制解决方案。在本文中就将分享13个优秀实用的JavaScript图表和图形绘制插件&#xff0c;它们少数是独立的框架&#xff0c;大多…

Java swing是什么?有什么作用?

在早期JDK1.0发布时&#xff0c;Sun公司就为GUI开发提供了一套基础类库&#xff0c;这套类库被称为AWT(Abstract Window Toolkit)&#xff0c;即抽象窗口工具包。AWT的起初设想就是为了统一实现不同操作系统的图像界面&#xff0c;但问题是&#xff0c;不同操作系统图形库的功能…

python之网络爬虫

一、演绎自已的北爱 踏上北漂的航班&#xff0c;开始演奏了我自已的北京爱情故事 二、爬虫1 1、网络爬虫的思路 首先&#xff1a;指定一个url&#xff0c;然后打开这个url地址&#xff0c;读其中的内容。 其次&#xff1a;从读取的内容中过滤关键字&#xff1b;这一步是关键&a…

Numpy入门教程:04. 数学函数

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

SAXParserFactory之求解

SAX是Simple API for XML的简称,在Android里面提供对XML文件的解析接口方法&#xff0c;如果给我们一个XML文件&#xff0c;要求把里面我们关心的数据解析出来&#xff0c;我们就可以使用SAX技术&#xff0c;在具体使用中&#xff0c;会对XML文件的每一个字符逐一读取并出发相应…

学习Java知识应该注意哪些基础原则

想要做java程序猿&#xff0c;学习起来没有那么快的&#xff0c;尤其是零基础学员&#xff0c;java技术在学习的过程中是比较枯燥的&#xff0c;下面小编就为大家详细的介绍一下学习Java知识应该注意哪些基础原则&#xff0c;方便大家在学习的时候能够更加有效率! 学习Java知识…

Numpy入门教程:05. 逻辑函数

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

git获取指定release版本代码

首先手里必须有release的版本的备份出来的/.repo/manifests/default.xml文件&#xff0c;该文件记录了每个git库的在该版本下的具体的版本情况&#xff0c;整个代码的sync都是依据他来的&#xff1b; 1、repo sync 将本地代码更新至最新&#xff1b; 2、将手里的manifests.xml&…

【内网福音】如何离线部署Rancher

2019独角兽企业重金招聘Python工程师标准>>> 对于在公司内网环境中、无法访问互联网的用户而言&#xff0c;离线安装部署Rancher是解决问题的关键。本文是Rancher离线部署教程&#xff0c;专为内网用户排坑解难。 版本说明 OS&#xff1a;Centos7.3 Docker version:…

JAVA工资高吗

JAVA工资高吗?很多人都是非常关注这个问题的&#xff0c;近几年&#xff0c;java技术在互联网行业有了自己的一席之地&#xff0c;越来越多的人都投身到java技术行业&#xff0c;下面我们来看看详细的介绍。 JAVA工资高吗? 近年来,在美国、加拿大、澳大利亚、新加坡等发达国家…

Numpy入门教程:06. 排序,搜索和计数

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

活动目录在构建核心过程中的八个关键点(下)

活动目录是一个面向Windows Server级别的目录服务。在之前的博客文章中介绍了活动目录设计中需要遵循的七个原则&#xff0c;今天在这里讲解有关《活动目录构建核心关键点》。 全文请见专题&#xff1a;http://os.51cto.com/art/201104/254054.htm 5. LDAP协议简介 LDAP的英文全…

smarty变量调节器--count_words[计算词数]

计算变量里的词数 。 Example 5-7. count_words <?php$smarty->assign(articleTitle, Dealers Will Hear Car Talk at Noon.);?>Where template is:{$articleTitle}{$articleTitle|count_words}This will output:Dealers Will Hear Car Talk at Noon.7 See also cou…

如何开发属于自己的第一个Java程序

学习java技术都是循序渐进的&#xff0c;搭建好了Java开发环境之后&#xff0c;下面就来学习一下如何开发Java程序。为了让初学者更好地完成第一个Java程序&#xff0c;接下来小编通过几个步骤进行逐一讲解。 1.编写Java源文件 在D盘根目录下新建一个test文件夹&#xff0c;并在…

Numpy入门教程:07. 随机抽样

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

如何成为一个Android高手

很多Android开发者已经度过了初级、中级&#xff0c;如何成为一个Android高手呢&#xff1f; eoeAndroid就各个级别的程序员应该掌握哪些内容作为下面分类. 一、初级 1. 拥有娴熟的Java基础&#xff0c;理解设计模式&#xff0c;比如OOP语言的工厂模式要懂得. 2. 掌握Android U…

云终端处理器——Atom

由于上周展会的缘故&#xff0c;开始对云终端【I】处理器产生兴趣&#xff0c;接下来在“物理层”【II】来理解下X86-Atom&#xff0c;ARM&#xff0c;MIPS三种处理器&#xff0c;这是第一篇&#xff0c;主Atom Intel公司的官网简单介绍了一句 “英特尔 凌动【III】 处理器&am…

Java培训的学费标准是多少

​ 很多想要进入到互联网行业的小伙伴都会选择java这门编程语言&#xff0c;java编程语言技术在互联网公司是起着非常重要的作用的&#xff0c;那么如今市面上的java培训机构有很多&#xff0c;选择报Java培训的学费标准是多少呢?来看看下面的详细介绍。 ​  Java培训的学费…

Numpy入门教程:08. 集合操作

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

iPhone开发技巧之工具篇(4)--- 使用afconvert转换WAV文件

转载自&#xff1a;http://www.yifeiyang.net/iphone-development-skills-of-tool-papers-4-wav-file-conversion-using-afconvert/ 程序中经常使用 .WAV 的音效文件&#xff0c;虽然可以直接使用它&#xff0c;但是最好转换为 apple 推荐的 .CAF 格式。 这个时候我们就可以使用…

SQLite与pandas

以下链接对SQLite使用方法总结的很棒&#xff1a; http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html 有关利用pandas读写QSLite的内容&#xff0c;可参考以下链接&#xff1a; http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html http:…

零基础学习java,这些书一定要看!

学习java技术除了看视频&#xff0c;看书也是非常重要的&#xff0c;尤其是零基础同学&#xff0c;本文包含学习Java各个阶段的书籍推荐&#xff0c;史上最全&#xff0c;学习Java&#xff0c;没有书籍怎么行&#xff0c;就好比出征没带兵器一个道理&#xff0c;这些书籍整理出…

Numpy入门教程:练习作业01

序言 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

转乱码UTF8和UTF-8网页编码

http://www.lovelucy.info/utf8-vs-utf-8.html#more-794 一、遇到的问题 曾经被字符集间复杂的转换搞怕了&#xff0c;正好新项目要求国际化&#xff0c;需要能够显示多种语言&#xff0c;于是一开始就规定统统使用 UTF-8 编码。 所有代码文件使用 UTF-8 编码存盘MySQL数据库所…

linux管道的执行顺序

最近有个疑问&#xff0c;netstat -antup|head -500 类似这条命令中&#xff0c;是netstat 执行完然后截取前500条记录还是&#xff0c;netstat 与head 并行执行&#xff0c;netstat 执行完500条就不再继续&#xff1f; 最终答案由酷学园darkdanger大大提供&#xff1a; 唔…