开发者学堂课程【高校精品课-华东师范大学-人工智能基础:Numoy 数组切片、迭代】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/920/detail/15573
Numoy 数组切片、迭代
内容介绍
一、Numpy 与 ndarray 的转换
二、ndarray 数组的切片,迭代和索引
三、统计计算
一、Numpy 与 ndarray 的转换
Numpy 和 ndarray 是机器学习常用的软件。数据类型,例如列表等,能否和 ndarray 进行转换呢?
答案是可以的。Numpy 中可以通过 array() 函数将 Python 中常见的数值序列转换为 ndarray 数组。例如list列表,Tuple (元组)等。
将 list 转换成 ndarray。首先输入:
import numpy as np
data=[[2000,'benz',1.5],
[2002, aodi',3.6],
[2002,'50',2.9]]
接下来使用 Numpy array() 函数,输入 ndarr=np.array(data),将 data 写入其中,print(ndarr)。运行,随即生成 ndarray 数组。运用 Print(type(ndarr))查看,检查确实是 Numpy ndarray 格式。
二、ndarray 数组的切片,迭代和索引
对数据序列对象取一部分操作。前面介绍过,字符串列表元组都支持切片语法,ndarray 数组与其他数据系列类似,也可以进行索引切片和迭代。对安德瑞进行切片操作,也是用索引标记切片的起始和终止位置。因为ndarray 可以是多维数组。在进行切片时,通常需要设定每个维度上的切片位置。比如:对刚才的 ndarray 。
adarr[2][1] ,运行后返回50。
adarr[:,2]。返回最后一列,数组的迭代也比较类似。先来看一维上的迭代:
for row in ndarr:
print(row,end=’'),
运行,数据逐行读取并显示,每一行后的空格是 print(row,end=’')的设置,Python的 print 语句默认的是每次打印完就进行换行。多维数组的迭代需要使用 for 循环的嵌套。
以二维数组的迭代为例。
输入:
for x in ndarr:
for y in x:
print(y,end=' |')
运行后,经过嵌套循环读取二维数组中的每一个元素,而上一个例子中是一次读取一行。另外还有一种方法能对 ndarray 进行遍历,就是 Numpy 中提供的迭代器对象 Numpy.nditer 可以很方便的对数组进行迭代。
输入:
for xin np.nditer(ndarr):
print(x)
将数组按顺序读取出来,还可以用参数 aodi 控制迭代顺序。如 nditer= a。aodi=f,就是按列进行迭代。如果需要特定的顺序,可以设置显示参数 aodi 强制 nditer 对象使用某种顺序。比如:这段程序从运行结果能看出,原数组是三行四列,C 风格的顺序是0,10,15,20,25,直到55,是逐行读取。F风格的顺序是,0, 20,40,5,25,45,是逐列读取。Numpy 中的 ndarray 可以进行一些基本的运算,包括条件运算、统计运算以及基本数组运算等。
条件运算:
Numpy 里的条件运算,既包括常见的比较大小运算,还可以使用 where 函数实现查找操作。where 函数格式如下,Where 第一个参数是 condition x if true why if false。根据条件表达式 condition 的值返回特定的数组,当条件为真时,返回X数组,条件为假时,返回Y数组。输入:import numpy as np
随即生成正态分布:
num=np. random.normal(0,1,(3,4)),
随即生成正态分布的3乘4数组,
Piint(num)
查看结果,小于0.5的设置为零。
num[num<0.5]=0
print(num)
将小于0.5的设置为零,筛选函数 where 可以选取大于0.5的,并显示为一。
输入:
print(np.where(num>0.5.1.0))
选取大于0.5的,并显示为一。这里大于0.5的原数据没有真正改变。
三、统计计算
Numpy 提供了一些统计函数,能实现加和、平均值、最大、最小等数值处理。假如要显示不同轴上的统计结果,可以使用 ndarray 的sum方法,另外通过设定 access 参数。可以沿不同轴进行求和,常用的统计函数有:
函数 描述
argmax 求最大值的索引
argmin 求最小值的索引
cumsum 从第一元素开始累加各元素
max 求最大值
mean 求算术平均值
min 求最小值
std 求数组元素沿给定轴的标准偏差
Sum 求和
来看 ndarray 的统计计算:
输入:
num=np. random.normal(0,1,(3,4))
maxNum=np.max(num,axis=0)
print(maxNum)
运行。
求出了每列的最大值。
下面求每一行的平均值:
输入:
avg=np.mean(num,axis=1)
print(avg)
求出每一行的平均值。
求每一列的加和:
输入:
sumNum=np.sum(num,axis=0)
print(sumNum)
求出每一列的加和。
我们介绍了 Numpy 的 ndarray 数组的切片,迭代和索引,还介绍了 Numpy 的运算功能,Numpy 在数组方面处理能力强大,成为机器学习的重要模块。