Numoy 数组切片、迭代|学习笔记

简介: 快速学习 Numoy 数组切片、迭代

开发者学堂课程【高校精品课-华东师范大学-人工智能基础: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]]

 image.png

接下来使用 Numpy array() 函数,输入 ndarr=np.array(data)将 data 写入其中print(ndarr)。运行,随即生成 ndarray 数组。运用 Printtype(ndarr))查看检查确实是 Numpy ndarray 格式

 

二、ndarray 数组的切片,迭代和索引

对数据序列对象取一部分操作。前面介绍过,字符串列表元组都支持切片语法,ndarray 数组与其他数据系列类似,也可以进行索引切片和迭代。对安德瑞进行切片操作,也是用索引标记切片的起始和终止位置。因为ndarray 可以是多维数组。在进行切片时,通常需要设定每个维度上的切片位置。比如:对刚才的 ndarray

adarr[2][1] ,运行后返回50。

image.png

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=' |')

image.png

运行后,经过嵌套循环读取二维数组中的每一个元素,而上一个例子中是一次读取一行。另外还有一种方法能对 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的设置为零。

image.png

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 在数组方面处理能力强大,成为机器学习的重要模块。

相关文章
|
2月前
|
索引 Python
解密可迭代对象的排序问题
解密可迭代对象的排序问题
26 0
|
3月前
|
Python
切片
【8月更文挑战第13天】切片。
28 2
|
6月前
|
索引 Python
索引、切片和迭代
【5月更文挑战第6天】 索引、切片和迭代。
30 1
|
6月前
|
索引 Python
NumPy 数组迭代与合并详解
NumPy 数组迭代包括基本和高级方法。使用 `for` 循环可迭代一维、二维及多维数组。`np.nditer()` 提供更多控制,如迭代顺序、过滤、类型转换和步长。`np.ndenumerate()` 返回元素及其索引。练习涉及合并数组操作。
58 0
|
存储 Java 索引
Java数组长度和增强遍历数组
Java数组长度和增强遍历数组
55 0
终于掌握append为切片添加元素的诀窍 切片动态增长看这里
终于掌握append为切片添加元素的诀窍 切片动态增长看这里
89 1
|
搜索推荐 编译器 C++
C++基础:第5~6章:数组\函数
C++基础:第5~6章:数组\函数
52 0
C#基础Ⅵ❷-数组
C#基础Ⅵ❷-数组
|
前端开发
前端学习案例12-数组遍历方法3-稀疏数组
前端学习案例12-数组遍历方法3-稀疏数组
63 0
前端学习案例12-数组遍历方法3-稀疏数组
|
存储 算法 索引
最基础的数组你真的掌握了吗?
首先要知道数组在内存中的存储方式,这样才能真正理解数组相关的题 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标下对应的数据。 举一个字符数组的例子,如图所示:
86 0