Numpy数组的创建 (第1讲)
🍹博主 侯小啾 感谢您的支持与信赖。☀️
🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ
✨本博客收录于专栏Python数据分析30讲.。
✨专栏特点:
①逻辑清晰,循序渐进,符合初学者思维,内容友好程度高。
②内容精炼,且不失重点,入门时间周期短。性比价高。
③能够兼容非科班,如金融,经济,统计,数学等专业的小伙伴。
④附实战案例加持,搭乘数分精通之路的直通车!
✨更多精彩内容敬请期待,小啾持续为您输出中!
文章目录
- 1.认识`numpy`数组
- 2. `array( )` 函数
- 2.1 `array()`函数创建一维数组
- 2.2`array()`函数创建多维数组
- 2.3 避坑:若传入字符串
- 3. `arange()`函数
- 4. `linspace()`函数 --等差数列
- 5. `logspace()`函数 --等比数列
- 6.`zeros`函数
- 7. `ones()`函数
- 8. `empty()`函数 创建全空数组
- 9. `full()`函数 创建指定值填充的数组
- 10. `eye()`函数 创建单位矩阵
- 11. `diag()`方法 创建对角线矩阵数组
1.认识numpy
数组
NumPy
数组是 NumPy
库中最重要的数据结构之一。所谓numpy
数组,即ndarray
对象。
它是一个一维或多维数组对象,可以存储相同类型的元素,并提供了许多功能强大的操作和函数来处理和分析数组数据。
通过使用 NumPy
数组,你可以进行各种数学运算、统计分析、线性代数操作、图像处理等。NumPy
数组是数据科学和机器学习领域中常用的工具,为快速、高效的数值计算提供了基础。
数组的维度,与线性代数中的矩阵类似。大家也完全可以按照矩阵的结构来理解。
这里用简单的文字示例,向大家传达数组从低维度到高维度的数据结构分布:
一维数组:
[1,2,3,4,5]
该数组shape为:(5,)
二维数组:
[ [1,2,3,4,5],
[6,7,8,9,10]
[11,12,13,14,15] ]
该数组的shape为(3,5)
三维数组:
[
[ [1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15] ]
[ [1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15] ]
]
该数组的shape
为(2,3,5)
依次类推,按此规律延伸至n维数组。
n维数组······
2. array( )
函数
Numpy
数组可以通过array()
函数创建。
array()函数的语法如下:
array(object,dtype=None, copy=True, order=‘K’, subok=False, ndmin=0)
odject
:任何具有数组接口方法的对象。通常也可以理解为是一个可迭代对象 即可。
dtype
:数据类型。
copy
:布尔类型值,是否复制,默认为True。设为true可以避免对数组数据有修改操作时影响到原数组。具体见下文 “数组的复制” 部分。
order
:元素在内存中出现的顺序,可以是"K"、“A”、“C”、"F"四个字符。
默认为“K”
,表示元素在内存中出现的顺序。“C”
表示按行排列,“F”
表示按列排列。如果object
是一个数组,则还可以是"A"
,表示原顺序。
subok
:布尔类型。默认为False,表示返回的数组默认为基类数组。如果为True则将传递子类。
ndmin
:生成数组的 最小维度。(最小,意味着可以大于这个数字,当不足这个数字时,补充到这个数字。)
2.1 array()
函数创建一维数组
以一维数组为例,一个使用array()
函数创建numpy
数组的简单示例如下:
import numpy as np
array1 = np.array([1, 2, 3, 4, 5]) # 传入一个列表对象
print(array1) # 查看array1
print(type(array1)) # 查看array1的类型
print(array1.shape) # 查看array1的shape
这里给array()
函数传入了一个列表对象,成功创建出一个ndarray
对象。代码输出效果如下:
通过ndarray
的shape
属性,可以查看数组的shape。
2.2array()
函数创建多维数组
以创建二维数组为例,可以给array()
函数传入一个可以描述数组结构的列表,这样就可以得到预期中的数组。
这样的列表的形式需要规整,且数据类型要统一,形如:
[ [1,2,3], [4,5,6] ]
代码示例如下:
import numpy as np
list1 = [[1,2,3,4,5],[6,7,8,9,10]]
array1 = np.array(list1)
print(array1)
print(type(array1))
print(array1.shape)
执行效果:
2.3 避坑:若传入字符串
我们知道,字符串也是一种可迭代对象。
但是如果若传入的是一个长度为n个字符的字符串,则不会得到一个长度为n的一维数组。
import numpy as np
array1 = np.array("abcdefg")
print(array1)
输出结果是一个长度为1的一维数组。程序不会选择对字符串进行分割。
虽然我们一般不会选择传入字符串,但是还是要注意这个误区。
3. arange()
函数
在Python
的NumPy
库中,arange
函数用于创建一个等差数列数组。
该函数返回一个从起始值到终止值(不包括终止值)之间的指定步长的一维数组。
arange
函数的基本语法如下:
numpy.arange(start, stop, step=1, dtype=None)
参数说明:
start
:起始值。stop
:终止值(不包括在结果中)。step
:可选参数,步长(默认为1)。dtype
:可选参数,输出数组的数据类型。
代码使用示例:
import numpy as np
# 创建一个从0到9的一维数组,默认步长为1
arr1 = np.arange(10)
print(arr1)
print("=================================================")
# 创建一个从1到10(不包括10)的一维数组,步长为2
arr2 = np.arange(1, 10, 2)
print(arr2)
print("=================================================")
# 创建一个从5到1(不包括1)的递减一维数组,步长为-1
arr3 = np.arange(5, 0, -1)
print(arr3)
代码执行效果:
import numpy as np
array1 = np.arange(0, 10, 0.2)
print(array1)
(此时结果数据类型是浮点类型)
4. linspace()
函数 --等差数列
在Python
的NumPy
库中,linspace
函数用于创建一个等间距的线性数列数组。
该函数返回一个从起始点到终止点之间的指定数量的均匀间隔数组。
linspace
函数的基本语法如下:
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数说明:
start
:起始点。stop
:终止点。num
:可选参数,要生成的等间距数列中的元素数量(默认为50)。endpoint
:可选参数,如果为True,则终止点包含在等间距数列中;如果为False,则终止点不包含在等间距数列中(默认为True)。retstep
:可选参数,如果为True,则返回结果中包含数列的步长;如果为False(默认),则不包含步长。dtype
:可选参数,输出数组的数据类型。
代码示例:
import numpy as np
# 创建一个包含5个元素的等间距数列,默认包含终止点
arr1 = np.linspace(1, 10, 5)
print(arr1)
print("=================================================")
# 创建一个包含4个元素的等间距数列,不包含终止点,并返回数列的步长
arr2, step = np.linspace(0, 1, 4, endpoint=False, retstep=True)
print(arr2)
# 输出: [0. 0.25 0.5 0.75]
print(step)
print("=================================================")
# 创建一个包含6个元素的等间距数列,指定数据类型为整数
arr3 = np.linspace(1, 10, 6, dtype=int)
print(arr3)
代码执行效果:
5. logspace()
函数 --等比数列
在Python
的NumPy
库中,logspace
函数用于创建一个等比数列形式的数组。
logspace
函数的基本语法如下:
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
参数说明:
start
:起始点的对数值(默认为0)。stop
:终止点的对数值。num
:可选参数,要生成的等比数列中的元素数量(默认为50)。endpoint
:可选参数,如果为True,则终止点包含在等比数列中;如果为False,则终止点不包含在等比数列中(默认为True)。base
:可选参数,对数的底数(默认为10.0)。dtype
:可选参数,输出数组的数据类型。
代码示例:
import numpy as np
# 创建一个包含5个元素的等比数列,默认以底数10计算
arr1 = np.logspace(1, 5, 5,dtype='int')
print(arr1)
print("=========================================================")
# 创建一个包含10个元素的等比数列,以底数2计算
arr2 = np.logspace(1, 10, 10, base=2,dtype='int')
print(arr2)
print("=========================================================")
# 创建一个包含6个元素的等比数列,以底数e(自然对数的底数)计算
arr3 = np.logspace(0, 5, 6, base=np.e)
print(arr3)
代码执行效果:
6.zeros
函数
在Python
的NumPy
库中,zeros
函数用于创建一个指定形状且元素全为0的数组。
该函数返回一个由0组成的数组。
zeros
函数的基本语法如下:
numpy.zeros(shape, dtype=float, order='C')
参数说明:
shape
:数组的形状,可以是一个整数或一个由整数组成的元组。dtype
:可选参数,数组的数据类型,默认为浮点型。order
:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。
代码示例:
import numpy as np
# 创建一个形状为(2, 3)的数组,元素全为0
arr1 = np.zeros((2, 3))
print(arr1)
print("=================================================")
# 创建一个形状为(3, 4, 2)的三维数组,元素全为0
arr2 = np.zeros((3, 4, 2))
print(arr2)
代码执行效果:
zeros
函数创建的数组中的元素均为0。如果希望创建初始值非零的数组,可以使用ones
函数来创建元素全为1的数组,或者使用full
函数来创建指定初始值的数组。
7. ones()
函数
在Python的NumPy库中,ones
函数用于创建一个指定形状且元素全为1的数组。该函数返回一个由1组成的数组。
ones
函数的基本语法如下:
numpy.ones(shape, dtype=float, order='C')
参数说明:
shape
:数组的形状,可以是一个整数或一个由整数组成的元组。dtype
:可选参数,数组的数据类型,默认为浮点型。order
:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。
代码示例:
import numpy as np
# 创建一个形状为(2, 3)的数组,元素全为1
arr1 = np.ones((2, 3))
print(arr1)
print("=================================================")
# 创建一个形状为(3, 4, 2)的三维数组,元素全为1
arr2 = np.ones((3, 4, 2))
print(arr2)
代码执行效果:
8. empty()
函数 创建全空数组
在Python
的NumPy
库中,empty
函数用于创建一个指定形状和数据类型的空数组。该函数返回一个未初始化的数组,即它的元素可以是任意值。
empty
函数的基本语法如下:
numpy.empty(shape, dtype=float, order='C')
参数说明:
shape
:数组的形状,可以是一个整数或一个由整数组成的元组。dtype
:可选参数,数组的数据类型,默认为浮点型。order
:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。
代码示例:
import numpy as np
# 创建一个2x3的空数组
arr1 = np.empty((2, 3))
print(arr1)
print("======================================================================")
# 创建一个3维的空数组
arr2 = np.empty((2, 3, 4))
print(arr2)
代码执行效果:
需要注意的是,empty
函数创建的数组不会像zeros
函数一样将元素初始化为0,而是保留了数组在内存中原有的内容。因此,使用empty
函数创建的数组的值是未知的,可能包含任意值。如果希望创建一个初始值全为0的数组,可以使用zeros
函数;如果希望创建一个初始值全为1的数组,可以使用ones
函数。
9. full()
函数 创建指定值填充的数组
在Python
的NumPy
库中,full
函数用于创建一个指定形状和初始值的数组。该函数返回一个由指定值组成的数组。
full
函数的基本语法如下:
numpy.full(shape, fill_value, dtype=None, order='C')
参数说明:
shape
:数组的形状,可以是一个整数或一个由整数组成的元组。fill_value
:初始值,可以是一个标量或一个数组。dtype
:可选参数,数组的数据类型,默认为None(使用fill_value
的数据类型)。order
:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。
代码示例:
import numpy as np
# 创建一个形状为(2, 3)的数组,所有元素都为2.5
arr1 = np.full((2, 3), 2.5)
print(arr1)
print("=================================================")
# 创建一个形状为(3, 4, 2)的三维数组,所有元素都为7
arr2 = np.full((3, 4, 2), 7)
print(arr2)
代码执行效果:
10. eye()
函数 创建单位矩阵
在Python
的NumPy
库中,eye
函数用于创建一个单位矩阵。
单位矩阵是一个正方形矩阵,对角线上的元素为1,其余元素为0。
eye
函数的基本语法如下:
numpy.eye(N, M=None, k=0, dtype=float, order='C')
参数说明:
N
:生成的单位矩阵的行数。M
:可选参数,生成的单位矩阵的列数,默认为None(即生成N×N的方阵)。k
:可选参数,对角线偏移量。正值表示对角线位于主对角线之上,负值表示对角线位于主对角线之下,默认为0(即主对角线)。dtype
:可选参数,输出数组的数据类型,默认为浮点型。order
:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。
代码示例:
import numpy as np
# 创建一个3×3的单位矩阵
arr1 = np.eye(3)
print(arr1)
print("=================================================")
# 创建一个2×4的单位矩阵,并将对角线向上偏移1个位置
arr2 = np.eye(2, 4, k=1)
print(arr2)
print("=================================================")
# 创建一个5×5的整数类型的单位矩阵
arr3 = np.eye(5, dtype=int)
print(arr3)
代码执行效果:
11. diag()
方法 创建对角线矩阵数组
在Python
的NumPy
库中,diag
函数用于:
①提取一个方阵的对角线元素
或者
②构造一个以给定一维数组为对角线元素的方阵。
diag
函数的基本语法如下:
numpy.diag(v, k=0)
参数说明:
v
:输入的一维数组。k
:可选参数,对角线偏移量。正值表示对角线位于主对角线之上,负值表示对角线位于主对角线之下,默认为0(即主对角线)。
示例使用:
import numpy as np
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 提取数组的主对角线元素
diag_elements = np.diag(arr)
print(diag_elements)
print("=================================================")
# 构造一个以给定一维数组为对角线元素的方阵
diagonal1 = [1, 2, 3]
matrix1 = np.diag(diagonal1)
print(matrix1)
print("=================================================")
# 在主对角线上方构造一个以给定一维数组为对角线元素的方阵
diagonal2 = [4, 5, 6]
matrix2 = np.diag(diagonal2, k=1)
print(matrix2)
代码执行效果:
diag
函数可以用来提取一个方阵的对角线元素,也可以用来构造一个以给定一维数组为对角线元素的方阵。通过设置k
参数可以控制对角线的偏移。当k=0
时,提取或构造的是主对角线上的元素;当k>0
时,提取或构造的是主对角线上方的元素;当k<0
时,提取或构造的是主对角线下方的元素。