NumPy 迭代数组
NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式。

迭代器最基本的任务的可以完成对数组元素的访问。

接下来我们使用 arange() 函数创建一个 2X3 数组,并使用 nditer 对它进行迭代。

python中遍历数组的数据相加 numpy遍历数组_numpy


控制遍历顺序

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

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

python中遍历数组的数据相加 numpy遍历数组_python中遍历数组的数据相加_02


python中遍历数组的数据相加 numpy遍历数组_python中遍历数组的数据相加_03


python中遍历数组的数据相加 numpy遍历数组_python中遍历数组的数据相加_04


修改数组中元素的值

nditer 对象有另一个可选参数 op_flags。 默认情况下,nditer 将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值得修改,必须指定 read-write 或者 write-only 的模式。

python中遍历数组的数据相加 numpy遍历数组_迭代_05


Numpy 数组操作

python中遍历数组的数据相加 numpy遍历数组_迭代_06


numpy.reshape

numpy.reshape 函数可以在不改变数据的条件下修改形状,格式如下: numpy.reshape(arr, newshape, order=‘C’)

arr:要修改形状的数组

newshape:整数或者整数数组,新的形状应当兼容原有形状

order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘k’ – 元素在内存中的出现顺序。

python中遍历数组的数据相加 numpy遍历数组_数组_07


numpy.ndarray.flat

numpy.ndarray.flat 是一个数组元素迭代器,实例如下:

python中遍历数组的数据相加 numpy遍历数组_数组元素_08


numpy.ndarray.flatten

numpy.ndarray.flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组,格式如下:

python中遍历数组的数据相加 numpy遍历数组_数组元素_09


numpy.ravel

numpy.ravel() 展平的数组元素,顺序通常是"C风格",返回的是数组视图(view,有点类似 C/C++引用reference的意味),修改会影响原始数组。该函数接收两个参数:

python中遍历数组的数据相加 numpy遍历数组_数组元素_10


翻转数组

python中遍历数组的数据相加 numpy遍历数组_python中遍历数组的数据相加_11


python中遍历数组的数据相加 numpy遍历数组_迭代_12


numpy.ndarray.T 类似 numpy.transpose:

python中遍历数组的数据相加 numpy遍历数组_python中遍历数组的数据相加_13


连接数组

python中遍历数组的数据相加 numpy遍历数组_数组_14


python中遍历数组的数据相加 numpy遍历数组_数组_15


分割数组

python中遍历数组的数据相加 numpy遍历数组_迭代_16


python中遍历数组的数据相加 numpy遍历数组_numpy_17


axis 为 0 时在水平方向分割,axis 为 1 时在垂直方向分割:

python中遍历数组的数据相加 numpy遍历数组_数组_18


python中遍历数组的数据相加 numpy遍历数组_数组元素_19


numpy.hsplit

numpy.hsplit 函数用于水平分割数组,通过指定要返回的相同形状的数组数量来拆分原数组。

python中遍历数组的数据相加 numpy遍历数组_numpy_20


numpy.vsplit

numpy.vsplit 沿着垂直轴分割,其分割方式与hsplit用法相同。

python中遍历数组的数据相加 numpy遍历数组_数组元素_21


数组元素的添加与删除

numpy.append

numpy.append 函数在数组的末尾添加值。 追加操作会分配整个数组,并把原来的数组复制到新数组中。 此外,输入数组的维度必须匹配否则将生成ValueError。

append 函数不会改变原有数组的值,返回一个新的数组.

python中遍历数组的数据相加 numpy遍历数组_numpy_22


不指定axis时,总是返回一维展开数组

python中遍历数组的数据相加 numpy遍历数组_numpy_23


注:concatenate( )可以连接多个数组,而且多维数组的shape需要完全相同;append( )只能连接2个,而且多维数组的shape不需要相同

注:append( )不指定axis时,总是返回一维展开数组

numpy.insert

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

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

python中遍历数组的数据相加 numpy遍历数组_数组_24


python中遍历数组的数据相加 numpy遍历数组_数组_25


numpy.delete

numpy.delete 函数返回从输入数组中删除指定子数组的新数组。 与 insert() 函数的情况一样,如果未提供轴参数,则输入数组将展开。

python中遍历数组的数据相加 numpy遍历数组_数组元素_26


python中遍历数组的数据相加 numpy遍历数组_迭代_27


numpy.unique

numpy.unique 函数用于去除数组中的重复元素。

python中遍历数组的数据相加 numpy遍历数组_数组_28


python中遍历数组的数据相加 numpy遍历数组_python中遍历数组的数据相加_29


python中遍历数组的数据相加 numpy遍历数组_python中遍历数组的数据相加_30