目录
1.Numpy简介:
Numpy用途:
2.Numpy的简单使用:
2.1导入Numpy:
2.1查看numpy的版本:
编辑3.NumPy - Ndarray 对象
3.1ndarray属性:
3.2 numpy.array参数构造
3.3创建numpy数组:
3.4numpy库创建数组的集中内置函数:
4.numpy索引和切片:
4.1索引:
4.2切片:
一维数组:
二维数组:
1.Numpy简介:
NumPy 是一个 Python 库。 英文是 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。
Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 这个开源项目有很多贡献者。
Numpy用途:
-
数组的算数和逻辑运算。
-
傅立叶变换和用于图形操作的例程。
-
与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数
2.Numpy的简单使用:
2.1导入Numpy:
import numpy as np
通常我们将numpy简称为np。
2.1查看numpy的版本:
import numpy as np
print("numpy版本为:",np.__version__)
3.NumPy - Ndarray 对象
NumPy 中定义的最重要的对象是称为 ndarray
的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。ndarray
中的每个元素在内存中使用相同大小的块。 ndarray
中的每个元素是数据类型对象的对象(称为 dtype
)。
3.1ndarray属性:
维度:ndim ,直接返回维度数
形状:shape,数字有几个就表示几维数组
总长度:size,返回总数据量
元素类型:dtype
n1 = np.random.randint(1,10,(3,5))
print(n1)
print("维度:%d,形状:%s,总长度:%s,元素类型:%s"%(n1.ndim,n1.shape,n1.size,n1.dtype))
3.2 numpy.array参数构造
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
序号 | 参数及描述 |
1 | object任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。 |
2 | dtype 数组的所需数据类型,可选。 |
3 | copy 可选,默认为true,对象是否被复制。 |
4 | order C(按行)、F(按列)或A(任意,默认)。 |
5 | subok 默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。 |
6 | ndmin 指定返回数组的最小组数。 |
3.3创建numpy数组:
n1=np.array()
示例1: 下面我们创建一个一维数组:
a = np.array([1,2,3])
print(a)
输出如下:
[1, 2, 3]
实例2:下面是一个二维数组
a = np.array([[1, 2], [3, 4]])
print(a)
输出为:
[[1, 2]
[3, 4]]
示例3:便捷创建一个全为为0或者全为1的数组
a = np.zeros((3,3))
b = np.ones((3,2),dtype=np.float)
print(a)
print(b)
输出为:
3.4numpy库创建数组的集中内置函数:
arrange()函数用法:arange([start,] stop[, step,], dtype=None),start 为起始数,stop 为结束数,创建一个连续的一维数组。
linspace()函数用法:np.linspace(start,stop,num),创建一个包含 num 个数的等差数列,公差 d 等于多少由系统计算。
eye()函数用法:np.eye(N, M=None, k=0, dtype=<class ‘float’>, order=‘C’),N 是行数,M 是列数,K 是偏移量,创建一个单位矩阵数组。
normal()函数用法:normal(loc=0.0, scale=1.0, size=None),loc 表示均值,scale 表示标准差,size等价于 shape ,创建一个服从正态分布的多维数组。
randn() 函数用法:randn(d0, d1, …, dn),创建一个服从标准正态分布(X ~ N(0,1))的多维数组。也就是说,产生的数据大部分生成在0左右。
4.numpy索引和切片:
4.1索引:
在 ndarray 数组中,索引的使用有两种等价方式,即 n [M,N] = n [M][N],M表示第一个维度,N表示第二个维度,若不止二维,以此类推,n[M,N,P,……]。
n1 = np.random.randint(1,10,(3,5))
print(n1)
print("n1[2,3]=%s,n1[2][3]=%s"%(n1[2,3],n1[2][3]))
4.2切片:
numpy数组切片操作 列表用 [ ] 标识,支持字符,数字,字符串甚至可以包含列表(即嵌套)。,是 python 最通用的复合数据类型
一维数组:
a=[1,2,3.4,5]
print(a)
[ 1 2 3 4 5 ]
print(a[-1]) 取最后一个元素
结果:[5]
print(a[:-1]) 除了最后一个取全部
结果:[ 1 2 3 4 ]
print(a[1:]) 取第二个到最后一个元素
结果:[2 3 4 5]
print(a[::-1]) 取从后向前(相反)的元素
结果:[ 5 4 3 2 1 ]
print(a[2::-1]) 取从下标为2的元素**翻转读取**
结果:[ 3 2 1 ]
s='abcdefg'
print(s[0:4] #输出abcd
print(s[0:4:2]) #步长为 2(间隔一个位置)来截取,输出ac
二维数组:
二维数组(逗号,)
X[n0,n1]是通过 numpy 库引用二维数组或矩阵中的某一段数据集的一种写法。
类似的,X[n0,n1,n2]表示取三维数组,取N维数组则有N个参数,N-1个逗号分隔。
取元素 X[n0,n1]
这是最基本的情况,表示取 第0维 的第 n0 个元素,继续取 第1维 的第 n1个元素。如 X[2,2] 表示第0维第2个元素[20,21,22,23],然后取其第1维的第2个元素即 22;
切片 X[s0:e0,s1:e1]
这是最通用的切片操作,表示取 第0维 的第 s0 到 e0 个元素,继续取 第1维 的第 s1 到 e1 个元素(左闭右开)。如 X[1:3,1:3] 表示第0维第(1:3)个元素[[10,11,12,13],[20,21,22,23]],然后取其第1维的第(1:3)个元素即 [[11,12],[21,22]];
切片特殊情况 X[:e0,s1:]
特殊情况,即左边从0开始可以省略X[:e0,s1:e1],右边到结尾可以省略X[s0:,s1:e1],取某一维全部元素X[:,s1:e1],事实上和Python 的 序列切片规则是一样的。
常见的 X[:,0] 则表示 第0维取全部,第1维取0号元素;
import numpy as np
X = np.array([[0,1,2,3],[10,11,12,13],[20,21,22,23],[30,31,32,33]])
#X 是一个二维数组,维度为 0 ,1;第 0 层 [] 表示第 0 维;第 1 层 [] 表示第 1 维;
# X[n0,n1] 表示第 0 维 取第n0 个元素 ,第 1 维取第 n1 个元素
print(X[1,0])
# X[1:3,1:3] 表示第 0 维 取 (1:3)元素 ,第 1 维取第(1:3) 个元素
print(X[1:3,1:3])
# X[:n0,:n1] 表示第 0 维 取 第0 到 第n0 个元素 ,第 1 维取 第0 到 第n1 个元素
print(X[:2,:2])
# X[:,:n1] 表示第 0 维 取 全部元素 ,第 1 维取 第0 到第n1 个元素
print(X[:,:2])
# X[:,0]) 表示第 0 维 取全部 元素 ,第 1 维取第 0 个元素
print(X[:,0])
输出:
10
[[11 12]
[21 22]]
[[ 0 1]
[10 11]]
[[ 0 1]
[10 11]
[20 21]
[30 31]]
[ 0 10 20 30]
参考博客:Python中numpy数组切片:print(a[0::2])、[::-1]、[::2]、[:,2]、[1:,-1:]、[ : ,: -1],[:,-2:]、[ : n]、[m : ]等含义(详细)_python中[::2]_锵锵锵锵~蒋的博客-CSDN博客【NumPy系列】基本操作 - 一_向阳花花花花的博客-CSDN博客