当前位置:   article > 正文

NumPy学习笔记——数组处理_numpy逐行迭代

numpy逐行迭代

数组处理程序

数组处理程序

基本操作

方法 描述
copyto(dst, src[, casting, where]) 将值从一个数组复制到另一个数组,并根据需要进行广播。

改变数组形状

方法 描述
reshape(a, newshape[, order]) 在不更改数据的情况下为数组赋予新的形状。
ravel(a[, order]) 返回一个连续的扁平数组。
ndarray.flat 数组上的一维迭代器。
ndarray.flatten([order]) 返回折叠成一维的数组副本。

类转置操作

方法 描述
moveaxis(a, source, destination) 将数组的轴移到新位置。
rollaxis(a, axis[, start]) 向后滚动指定的轴,直到其位于给定的位置。
swapaxes(a, axis1, axis2) 互换数组的两个轴。
ndarray.T 转置数组。
transpose(a[, axes]) 排列数组的尺寸。

更改维度数

方法 描述
atleast_1d(*arys) 将输入转换为至少一维的数组。
atleast_2d(*arys) 将输入视为至少具有二维的数组。
atleast_3d(*arys) 以至少三个维度的数组形式查看输入。
broadcast 产生模仿广播的对象。
broadcast_to(array, shape[, subok]) 将数组广播为新形状。
broadcast_arrays(*args, **kwargs) 互相广播任意数量的阵列。
expand_dims(a, axis) 扩展数组的形状。
squeeze(a[, axis]) 从数组形状中删除一维条目。

改变数组的种类

方法 描述
asarray(a[, dtype, order]) 将输入转换为数组。
asanyarray(a[, dtype, order]) 将输入转换为ndarray,但通过ndarray子类。
asmatrix(data[, dtype]) 将输入解释为矩阵。
asfarray(a[, dtype]) 返回转换为浮点类型的数组。
asfortranarray(a[, dtype]) 返回以Fortran顺序排列在内存中的数组(ndim> = 1)。
ascontiguousarray(a[, dtype]) 返回内存中的连续数组(ndim> = 1)(C顺序)。
asarray_chkfinite(a[, dtype, order]) 将输入转换为数组,检查NaN或Infs。
asscalar(a) 将大小为1的数组转换为其等效的标量。
require(a[, dtype, requirements]) 返回提供的类型满足要求的ndarray。

组合数组

方法 描述
concatenate((a1, a2, …) 沿现有轴连接一系列数组。
stack(arrays[, axis, out]) 沿新轴连接一系列数组。
column_stack(tup) 将一维数组作为列堆叠到二维数组中。
dstack(tup) 沿深度方向(沿第三轴)按顺序堆叠数组。
hstack(tup) 水平(按列)顺序堆叠数组。
vstack(tup) 垂直(行)按顺序堆叠数组。
block(arrays) 从块的嵌套列表中组装一个nd数组。

拆分数组

方法 描述
split(ary, indices_or_sections[, axis]) 将数组拆分为多个子数组,作为ary的视图。
array_split(ary, indices_or_sections[, axis]) 将一个数组拆分为多个子数组。
dsplit(ary, indices_or_sections) 沿第3轴(深度)将数组拆分为多个子数组。
hsplit(ary, indices_or_sections) 水平(按列)将一个数组拆分为多个子数组。
vsplit(ary, indices_or_sections) 垂直(行)将数组拆分为多个子数组。

平铺数组

方法 描述
tile(A, reps) 通过重复A代表次数来构造一个数组。
repeat(a, repeats[, axis]) 重复数组的元素。

添加和删除元素

方法 描述
delete(arr, obj[, axis]) 返回一个新的数组,该数组具有沿删除的轴的子数组。
insert(arr, obj, values[, axis]) 沿给定轴在给定索引之前插入值。
append(arr, values[, axis]) 将值附加到数组的末尾。
resize(a, new_shape) 返回具有指定形状的新数组。
trim_zeross(filt[, trim]) 修剪一维数组或序列中的前导和/或尾随零。
unique(ar[, return_index, return_inverse, …]) 查找数组的唯一元素。

重新排列元素

方法 描述
flip(m[, axis]) 沿给定轴颠倒数组中元素的顺序。
fliplr(m) 左右翻转数组。
flipud(m) 上下翻转阵列。
reshape(a, newshape[, order]) 在不更改数据的情况下为数组赋予新的形状。
roll(a, shift[, axis]) 沿给定轴滚动数组元素。
rot90(m[, k, axes]) 在轴指定的平面中将阵列旋转90度。

常用数组处理方法

修改数组形状

函数 描述
reshape 不改变数据的条件下修改形状
flat 数组元素迭代器
flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组
ravel 返回展开数组

reshape函数

函数可以在不改变数据的条件下修改形状

reshape(arr, newshape, order='C')
  • 1

参数说明:

参数 描述
arr 要修改形状的数组
newshape 整数或者整数数组,新的形状应当兼容原有形状
order ‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘k’ – 元素在内存中的出现顺序。

示例:

x = np.zeros((3, 2))
a = np.reshape(x, (2, 3))			# 使用函数调用形式
b = x.reshape((1, 6))				# 使用方法调用形式

print(x)
print('------------------')
print(a)
print('------------------')
print(b)

# output:
# [[0. 0.]
#  [0. 0.]
#  [0. 0.]]
# ------------------
# [[0. 0. 0.]
#  [0. 0. 0.]]
# ------------------
# [[0. 0. 0. 0. 0. 0.]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

ndarray.flat函数

使用该方法将数组转换为一个可迭代对象

import numpy as np

x = np.array([[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]])
# 使用for循环直接迭代,将逐行迭代
for row in x:
    print(row, end='#\n')

# 使用flat,可以通过迭代获得数组的每一个元素
for element in x.flat:
    print(element)


# output:
# [1 2 3]#
# [4 5 6]#
# [7 8 9]#

# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

ndarray.flatten方法

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

ndarray.flatten(order='C')
  • 1

参数说明:

参数 描述
order ‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘K’ – 元素在内存中的出现顺序

示例:

x = np.array([[3, 1, 2],
             [6, 4, 5]])
a = x.flatten()
b = x.flatten('F')
c = x.flatten('A')
d = x.flatten('K')

print(x)
print('--------------')
print(a)
print('--------------')
print(b)
print('--------------')
print(c)
print('--------------')
print(d)


# output:
# [[3 1 2]
#  [6 4 5]]
# --------------
# [3 1 2 6 4 5]
# --------------
# [3 6 1 4 2 5]
# --------------
# [3 1 2 6 4 5]
# --------------
# [3 1 2 6 4 5]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

ravel函数

展平的数组元素,顺序通常是"C风格",返回的是数组视图(view,有点类似 C/C++引用reference的意味),修改会影响原始数组。

ravel(a, order='C')
  • 1

参数说明:

参数 描述
order ‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘K’ – 元素在内存中的出现顺序
x = np.array([[3, 1, 2],
             [6, 4, 5]])
a = x.ravel()
b = x.ravel('F')
c = x.ravel('A')
d = x.ravel('K')

print(x)
print('--------------')
print(a)
print('--------------')
print(b)
print('--------------')
print(c)
print('--------------')
print(d)

# output:
# [[3 1 2]
#  [6 4 5]]
# --------------
# [3 1 2 6 4 5]
# --------------
# [3 6 1 4 2 5]
# --------------
# [3 1 2 6 4 5]
# --------------
# [3 1 2 6 4 5]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

翻转数组

函数 描述
transpose 对换数组的维度
ndarray.T 和 self.transpose() 相同
rollaxis 向后滚动指定的轴
swapaxes 对换数组的两个轴

transpose与T方法

函数用于对换数组的维度,格式如下:

transpose(arr, axes)
  • 1

参数说明:

参数 描述
arr 要操作的数组
axes 整数列表,对应维度,通常所有维度都会对换。
x = np.array([[3, 1, 2],
             [6, 4, 5]])

y = np.transpose(x)
z = x.T

print(x)
print('-----------------')
print(y)
print('-----------------')
print(z)

# output:
# [[3 1 2]
#  [6 4 5]]
# -----------------
# [[3 6]
#  [1 4]
#  [2 5]]
# -----------------
# [[3 6]
#  [1 4]
#  [2 5]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

rollaxis函数

函数向后滚动特定的轴到一个特定位置,格式如下:

rollaxis(arr, axis, start)
  • 1

参数说明:

参数 描述
arr 数组
axis 要向后滚动的轴,其它轴的相对位置不会改变
start 默认为零,表示完整的滚动。会滚动到特定位置
a = np.arange(8).reshape(2,2,2)
print ('原数组:')
print (a)
print ('\n')
# 现在交换轴 0(深度方向)到轴 2(宽度方向)
 
print ('调用 swapaxes 函数后的数组:')
print (np.swapaxes(a, 2, 0))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

修改数组维度

维度 描述
broadcast
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/437496
推荐阅读
相关标签
  

闽ICP备14008679号