python的学习笔记10

2022-09-11  本文已影响0人  三块给你买麻糬_31c3

13、索引的使用

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样,通过中括号实现。ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

13.1索引取值

需要注意的有这个冒号的用法,如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [0:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [0:2],那么则提取两个索引(不包括停止索引)之间的项。这对于几维数组都同样适用,对于一维来说就更简单了。

13.2给某个范围的数进行运算

13.2.1获取数组中大于或小于某个确定值的数值

这样写即可

14、迭代数组

14.1 迭代数组的简单语句

迭代器最基本的任务的可以完成对数组元素的访问。迭代的方式是通过nditer语句

此时输出的结果为0,1,2,3,4,5

如果没有end=“,”语句,则输出的结果为

14.2控制遍历顺序

创建数组在默认的情况下是按行访问的,但也能通过语句改变输出方式:

for x in np.nditer(a, order='F'):Fortran order,即是列序优先;

for x in np.nditer(a.T, order='C'):C order,即是行序优先;

此外还有几个点要注意一下:

(1)print(x,end=','),在这个语句后需要换行,否则输出的数组会直接跟着逗号之后

(2)要控制遍历顺序最简单的方式还是在遍历语句之中直接加限定条件

14.3修改数组中元素的值

numpy.nditer语句中另一个可选参数 op_flags,在默认情况下其遍历的数组就是我们创建的数组,但是可以通过指定参数来更改元素的值。即限定参数为‘readwriter’

输出结果

15、数组操作

15.1修改数组形状

函数 描述

reshape 不改变数据的条件下修改形状

flat 数组元素迭代器

flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组

ravel 返回展开数组

reshape 已经很熟了就不介绍了

对于numpy.ndarray.flat来说,他是一个数组元素迭代器,要通过遍历的方式

输出结果

其他两个都是数组迭代器,顺序都有两个维度一个是行一个是列,'C' -- 按行,'F' -- 按列

因此输出是可以选择是行还是列输出,如:

print (a.flatten(order = 'F'))    print (a.ravel(order = 'F'))

15.2翻转数组

函数 描述

transpose 对换数组的维度,包含两个参数,arr:要操作的数组;axes:整数列表,对应维度,通常所有维度都会对换。

ndarray.T 和 transpose() 相同

rollaxis 向后滚动指定的轴numpy.rollaxis(arr, axis, start)

arr:数组;axis:要向后滚动的轴,其它轴的相对位置不会改变

start:默认为零,表示完整的滚动。会滚动到特定位置。

swapaxes 对换数组的两个轴numpy.swapaxes(arr, axis1, axis2)

arr:输入的数组;axis1:对应第一个轴的整数;axis2:对应第二个轴的整数

15.3修改数组维度

维度 描述

broadcast 产生模仿广播的对象

broadcast_to 将数组广播到新形状

expand_dims 扩展数组的形状

squeeze 从数组的形状中删除一维条目,压缩维度

15.4连接数组

函数 描述

concatenate 连接沿现有轴的数组序列

stack 沿着新的轴加入一系列数组。

hstack 水平堆叠序列中的数组(列方向)相当于concatenate中轴等于1的情况

vstack 竖直堆叠序列中的数组(行方向)相当于concatenate中轴等于0的情况

输出结果

15.5分割数组

函数 数组及操作

split 将一个数组沿特定的轴将数组分割为子数组

hsplit 将一个数组水平分割为多个子数组(按列)

vsplit 将一个数组垂直分割为多个子数组(按行)

输出结果

15.6数组元素的添加与删除

函数 元素及描述

resize 返回指定形状的新数组,就是改变数组的形状

append 将值添加到数组末尾

insert 沿指定轴将值插入到指定下标之前

delete 删掉某个轴的子数组,并返回删除后的新数组

unique 查找数组内的唯一元素

(1)numpy.append(arr, values, axis=None) value是要添加的值

axis:默认为 None。当axis无定义时,是横向加成,返回总是为一维数组!当axis有定义的时候,分别为0和1的时候。当axis有定义的时候,分别为0和1的时候(列数要相同)。当axis为1时,数组是加在右边(行数要相同)。

输出结果为:

需要注意的是在插入数据时要注意维度,即中括号的添加。

(2)numpy.insert 函数

在给定索引之前,沿给定轴在输入数组中插入值。

如果值的类型转换为要插入,则它与输入数组不同。 插入没有原地的,函数会返回一个新数组。 此外,如果未提供轴,则输入数组会被展开。

上一篇下一篇

猜你喜欢

热点阅读