1.Python包之NumPy介绍

版权声明:仅供学习使用,未经同意不得转发,不可使用商业用途。 https://blog.csdn.net/wangqingbang/article/details/90318274

前言: NumPy 专门用于Python中的科学计算. 它能够高效地操纵含有随机记录的大型多维数组, 并且速度与处理小型多维数组几乎一样快. 它也可以当作通用数据的多维容器. NumPy 具有创建任意类型数组的能力, 这使它适合与通用数据库应用程序连接, 也使其成为以后机器学习使用最有用的库之一.

以下是使用NumPy包的代码. 代码中含有注释, 更易理解

1. NumPy数组的基本操作

# NumPy

import numpy as np  # 导入NumPy的包

a = np.array([1, 4, 5, 8], float)  # 创建一个浮点类型的NumPy数组
print(type(a))  # 输出变量的类型
# > <class 'numpy.ndarray'>

# 对数组进行操作
a[0] = 5  # 替换数组中的第一个元素
print(a)
# > [5. 4. 5. 8.]

b = np.array([[1, 2, 3], [4, 5, 6]], float)  # 创建一个二维的numpy数组
b[0, 1]  # 获取第一个数组的第二个元素
# >2.0
print(b.shape)  # 输出数组形状的元组
# >(2, 3)

b.dtype  # 返回存储数值的类型
# > dtype('float')

print(len(b))  # 返回第一个轴的长度,(也就是在一维上有几个元素)
# > 2

2 in b  # 'in' 判断 元素2 是否在数组中
# > True

0 in b
# > False

# 使用重塑 'reshape': 在这里从一维到二维进行转化元素
c = np.array(range(12), float)
print(c)
print(c.shape)
print('---')
c = c.reshape((2, 6))  # 用新格式重塑数组
print(c)
print(c.shape)
# > [ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11.]
# (12,)
# ---
# [[ 0.  1.  2.  3.  4.  5.]
# [ 6.  7.  8.  9. 10. 11.]]
# (2, 6)

c.fill(0)           # 使得数组中所有的值都替换为0
print(c)
#> [[0. 0. 0. 0. 0. 0.], [0. 0. 0. 0. 0. 0.]]

c.transpose()       # 创建数组的转置
# >array([ 0. ,0.],[ 0. ,0.],[ 0. ,0.],[ 0. ,0.],[ 0. ,0.],[ 0. ,0.])

c.flatten()         # 是数组变为一维(将整个数组压平)
# >array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,])

# 连接两个或以上数组
m = np.array([1,2],float)
n = np.array([3,4,5,6], float)
p = np.concatenate((m,n))
print(p)
# >[1,2,3,4,5,6]
print(p.shape)
# > (6,)

#“newaxis”:增加数组的维数
q = np.array([1,2,3], float)
q[:, np.newaxis].shape
# > (3, 1)
print(q[:, np.newaxis])
# > [[1.],[2.],[3.]]
i = np.array([[1,2,3],[4,5,6]], float)
print(i[:,0])

# > [1. 4.]

2. 数组的常用函数

NumPy 还有其他函数, 例如 zeros、ones、zeros_like、ones_like、identity、eye,它们用于创建填充了0和1的数组,或是指定了维度的数组

加法、减法和乘法可以应用于相同大小的数组。NumPy中乘法是元素间相乘,而不是矩阵乘法。如果数组的大小不匹配,则较小的数组会被重复,以执行所需的运算,下面是一个例子:

a1 = np.array([[1,2],[3,4],[5,6]], float)
a2 = np.array([-1,3], float)
print(a1 + a2)
#> [[0. 5.],[2. 7.],[4. 9.]]

需要注意的是:pi 和 e 以常数的形式包含于 NumPy 中。

NumPy 提供了一些可直接用于数组的函数:sum(求和)、prod(元素的积)、mean(元素的平均值)、var(元素的方差)、std(元素的标准差)、argmin(数组中最小元素的索引)、argmax(数组中最大元素的索引)、sort(对元素排序)、unique(数组中的唯一元素)

a3 = np.array([[0,2],[3,-1],[3,5]], float)
print(a3.mean(axis=0))  # 元素列平均
print(a3.mean(axis=1))  # 元素行平均
a4 = np.array([0,0,0], float)
print(np.unique(a3))    #unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表
# > [2. 2.]
# [1. 1. 4.]
#> [-1.  0.  2.  3.  5.]

3. NumPy 的其他函数

NumPy 提供了用于测试数组中是否存在某些数值的函数,例如nonzero(检查非零元素)、isnan(检查“非数字”元素)和isfinite(检查有限元素)。where函数的返回值是一个数组,其中元素满足函数后面的条件,np.where(condition, x, y) 满足条件(condition),输出x,不满足输出y

#	当是np.where(condition, x, y)
aa = np.arange(10)
np.where(aa,1,-1)
# > array([-1,  1,  1,  1,  1,  1,  1,  1,  1,  1])  # 0为False,所以第一个输出-1

#	当是	np.where(condition)
a = np.array([2,4,6,8,10])
np.where(a > 5)             # 返回索引
#array([2, 3, 4]),)
a[np.where(a > 5)]              # 等价于 a[a>5]
#array([ 6,  8, 10])

若要生成不同长度的随机数,可以使用NumPy中的random函数

np.random.rand(2,3)
# > array[[0.13496664 0.87039504 0.02251768]
#  [0.43616716 0.76776217 0.8041952 ]]

注:随机数种子可通过numpy.random.seed(1234)设定。NumPy通过马特赛特旋转演算法生成伪随机数。

猜你喜欢

转载自blog.csdn.net/wangqingbang/article/details/90318274