沿着指定轴翻转数组元素的顺序,数组形状保持不变,但是数组元素顺序会被重排
numpy.flip(m, axis=None)
参数 | 含义 |
---|---|
m | 输入数组 |
axis | 取值为None、整数、整数构成的元组 |
import numpy as np
# 1. 一维数组: 翻转数组是将数组的数据倒序排列,但数组形状不变
a = np.arange(10)
print('原始数组a: ', a, sep='\n')
a1 = np.flip(a)
print('翻转数组a得到数组a1: ', a1, sep='\n')
对于一维数组这个flip函数的作用相当于 a[::-1]
import numpy as np
# 1)不指定轴axis
b = np.array([[1, 2, 1, 2], [3, 4, 4, 4], [1, 2, 5, 6], [2, 4, 7, 8]])
print('数组b:', b, sep='\n')
b1 = np.flip(b)
print('翻转数组b得到数组b1: ', b1, sep='\n')
b = np.array([[1, 2, 1, 2], [3, 4, 4, 4], [1, 2, 5, 6], [2, 4, 7, 8]])
print('数组b:', b, sep='\n')
b1 = np.flip(b, axis=1)
print('沿着轴axis=1翻转数组b得到数组b1: ', b1, sep='\n')
当指定轴axis=1,沿着列翻转,行上包含的元素不变,列上的元素倒序排列,如上图中,最后一列变成第一列,倒数第二列变成第二列,以此类推;相当于 b[:, ::-1]
import numpy as np
c = np.array([[[1, 2, 1, 2], [3, 4, 4, 4], [1, 2, 2, 2], [3, 4, 4, 5]],
[[1, 2, 1, 2], [30, 40, 40, 42], [12, 23, 22, 21], [33, 34, 54, 64]]])
print('c:', c, sep='\n')
c1 = np.flip(c)
print('翻转数组c得到数组c1: ', c1, sep='\n')
print(c[::-1, ::-1, ::-1])
将所有轴的数据都进行翻转,相当于c[::-1, ::-1, ::-1]
c2 = np.flip(c, axis=0)
print('翻转数组c得到数组c2: ', c2, sep='\n')
沿着轴axis=0的方向翻转,上下两块数组位置互换,相当于c[::-1]
c3 = np.flip(c, axis=1)
print('翻转数组c得到数组c3: ', c3, sep='\n')
沿着axis=1的方向翻转,相当于c[::, ::-1, ::]
c4 = np.flip(c, axis=(0, 2))
print('翻转数组c得到数组c4: ', c4, sep='\n')
在轴aixs=0和轴axis=2两个轴上同时翻转,相当于c[::-1, ::, ::-1]
返回一个原数组沿着指定轴翻转后的view,返回的数组与原数组共享同一个内存区域,但是不同的对象
import numpy as np
c = np.array([[[1, 2, 1, 2], [3, 4, 4, 4], [1, 2, 2, 2], [3, 4, 4, 5]],
[[1, 2, 1, 2], [30, 40, 40, 42], [12, 23, 22, 21], [33, 34, 54, 64]]])
# print('c:', c, sep='\n')
d = c.view()
print(id(c))
print(id(d))
print(d.base is c)