首页 > 编程语言 > Python基础之Numpy的基本用法详解
2021
06-09

Python基础之Numpy的基本用法详解

一、数据生成

1.1 手写数组

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) # 一维数组
b = np.array([[1, 2], [3, 4]]) #二维数组

1.2 序列数组

numpy.arange(start, stop, step, dtype),start默认0,step默认1

c = np.arange(0, 10, 1, dtype=int)  # =np.arange(10)  [0 1 2 3 4 5 6 7 8 9]
d = np.array([np.arange(1, 3), np.arange(4, 6)])  # 二维数组
# 不过为了避免麻烦,通常序列二维数组都是通过reshape进行重新组织
dd = c.reshape(2, 5)  # 将一维数组重新组合成2行5列

1.3 随机数组

numpy.random.random(size=None) 该方法返回[0.0, 1.0)范围的随机小数。
numpy.random.randint() 该方法返回[low, high)范围的随机整数。
该方法有三个参数low、high、size 三个参数。默认high是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)
numpy.random.randn(d0,d1,…,dn) 该方法返回一个或一组样本,具有正态分布
np.random.normal 指定期望和方差的正太分布

e = np.random.random(size=2)  # 一维数组,元素两个,[0.0,1.0]的随机数
f = np.random.random(size=(2, 3))  # 两行三列数组,[0.0,1.0]的随机数

h = np.random.randint(10, size=3)  # [0,10]范围内的一行三列随机整数
i = np.random.randint(5, 10, size=(2, 3))  # [5,10]范围内的2行3列随机整数

1.4 其他方式数组

numpy.zeros 创建指定大小的数组,数组元素以0 来填充
numpy.ones 创建指定形状的数组,数组元素以1 来填充
numpy.empty 创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组,里面的元素的值是之前内存的值
np.linspace 创建一个一维数组,数组是一个等差数列构成的
numpy.logspace 创建一个于等比数

j = np.zeros((2, 5))
k = np.ones((2, 5))
l = np.linspace(1, 20, 10)

二、数组属性查看

ndarray.ndim
darray.shape 数组的维度和列,对于矩阵,n 行m 列
ndarray.size 数组元素的总个数,相当于.shape 中n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray 元素的实部
ndarray.imag ndarray 元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

print('ndim:数组的秩(维度)'.center(20, '*'))
print('ndim:', i.shape[1])

三、数组索引

x = np.arange(1, 13) # 一维数组
a = x.reshape(4, 3) # 二维数组
print(‘x:', x)
print(‘a:', a)

3.1 一维数组的索引

print(x[2:])
print(x[3:8])

3.2 二维数组的索引

print(a[0])  # 第一行
print(a[2, 2])  # 第三行第4列
print(a[:, 2])
print(a[::2, 0])  # 所有奇数行第1列数据
print(a[(2, 1), (1, 2)])  # 第3行第2列,第2行第3列   = np.array((a[2,1],a[1,2]))取出来后在重新生成新的数组
print(a[-2])  # 获取倒数第二行
print(a[::-1])  # 行倒序
print(a[::-1, ::-1])  # 行列倒序

四、数组的方法

4.1 改变数组维度

reshape将一维数组变成二维或者三维
ravel将三维数组变成一维数组,flatten将二维数组变成一维数组

4.2 数组拼接

使用numpy.hstack(a1,a2) 函数将两个数组水平组合
numpy.vstack(a1,a2) 函数可以将两个或多个数组垂直组合起来形成一个数组
使用numpy.concatenate((a1, a2, …), axis),控制axis参数的值也可以实现hstack和vstack的功能,axis=0等同于vstack、axis=1等同于hstack

4.3 数组分隔

b = np.split(x, 4)  # 将一个一维数组四等分, 用b[1]的方式获取每个块的数据
# print(b[1])
c = np.split(a, 2, axis=0)  # 二维数组的垂直分隔,按行分隔成两部分
# print(c[0])
d = np.split(a, [2], axis=1)  # 二维数组的水平分隔,按列分隔成两部分
# print(d[0])

4.4 算术运算

加减乘除: add(),subtract(),multiply() 和divide()
np.sum() 求和
np.prod() 所有元素相乘
np.mean() 平均值
np.std() 标准差
np.var() 方差
np.median() 中数
np.power() 幂运算
np.sqrt() 开方
np.min() 最小值
np.max() 最大值
np.argmin() 最小值的下标
np.argmax() 最大值的下标
np.inf 无穷大
np.exp(10) 以e 为底的指数
np.log(10) 对数

到此这篇关于Python基础之Numpy的基本用法详解的文章就介绍到这了,更多相关Python Numpy用法内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

编程技巧