程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

numpy 数组的旋转、翻转、镜像

发布于2019-08-22 16:50     阅读(4489)     评论(0)     点赞(17)     收藏(5)


常见的数组翻转等方法

函数 描述
transpose 对换数组的维度
ndarray.T 转置
rollaxis 向后滚动指定的轴
swapaxes 对换数组的两个轴
np.transpose(),numpy.array.T
import numpy as np


arr0 = np.arange(12).reshape(3, 4)
arr2 = np.transpose(arr0)
arr3 = arr0.T

print('arr0 原数组:\n', arr0,'\n')
print('arr2 维度对换之后:\n', arr2,'\n')
print('arr3 数组转置:\n', arr3,'\n')
'''
arr0 原数组:
 [[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]] 

arr2 维度对换之后:(显然与转置效果arr3相同)
 [[ 0  4  8]
  [ 1  5  9]
  [ 2  6 10]
  [ 3  7 11]] 

arr3 数组转置:
 [[ 0  4  8]
  [ 1  5  9]
  [ 2  6 10]
  [ 3  7 11]] 

'''
  • 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
np.rollaxis(),np.swapaxes() 数组滚动与维度交换
arr1 = np.arange(18).reshape(2,3,3)
arr4_0 = np.rollaxis(arr1,0,2)
arr4_1 = np.rollaxis(arr1,2,1)

print('arr1 原数组:\n', arr1,'\n')
print('arr4_0 向后滚动特定的轴到一个特定位置:\n', arr4_0,'\n')
print('arr4_1 向后滚动特定的轴到一个特定位置:\n', arr4_1,'\n')

arr5_0 = np.swapaxes(arr1, 0, 1)
arr5_1 = np.swapaxes(arr1, 1, 2)
print('arr5_0交换数组的两个轴:\n', arr5_0,'\n')
print('arr5_1交换数组的两个轴:\n', arr5_1,'\n')
'''
arr1 原数组:
 [[[ 0  1  2]
   [ 3  4  5]
   [ 6  7  8]]

  [[ 9 10 11]
   [12 13 14]
   [15 16 17]]] 

arr4_0 向后滚动特定的轴到一个特定位置:(与arr5_0 效果相同)
 [[[ 0  1  2]
   [ 9 10 11]]

  [[ 3  4  5]
   [12 13 14]]

  [[ 6  7  8]
   [15 16 17]]] 

arr4_1 向后滚动特定的轴到一个特定位置:(与arr5_1 效果相同)
 [[[ 0  3  6]
  [ 1  4  7]
  [ 2  5  8]]

  [[ 9 12 15]
   [10 13 16]
   [11 14 17]]] 

arr5_0交换数组的两个轴:
 [[[ 0  1  2]
  [ 9 10 11]]

  [[ 3  4  5]
   [12 13 14]]

  [[ 6  7  8]
   [15 16 17]]] 

arr5_1交换数组的两个轴:
 [[[ 0  3  6]
  [ 1  4  7]
  [ 2  5  8]]

  [[ 9 12 15]
   [10 13 16]
   [11 14 17]]]
'''
  • 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
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
数组旋转(psf2otf 卷积核用的)
import numpy as np


def flip180(arr):
    new_arr = arr.reshape(arr.size)
    new_arr = new_arr[::-1]
    new_arr = new_arr.reshape(arr.shape)
    return new_arr

def flip90_left(arr):
    new_arr = np.transpose(arr)
    new_arr = new_arr[::-1]
    return new_arr

def flip90_right(arr):
    new_arr = arr.reshape(arr.size)
    new_arr = new_arr[::-1]
    new_arr = new_arr.reshape(arr.shape)
    new_arr = np.transpose(new_arr)[::-1]
    return new_arr

arr0 = np.array([[1,2,3],
                 [4,5,6],
                 [7,8,9]])

flip_180 = flip180(arr0)
left_90 = flip90_left(arr0)
right_90 = flip90_right(arr0)

print('===== flip_180 ====\n',flip_180,'\n')
print('===== left_90 =====\n',left_90,'\n')
print('===== right_90 =====\n',right_90,'\n')
'''
===== flip_180 ====
 [[9 8 7]
 [6 5 4]
 [3 2 1]] 

===== left_90 =====
 [[3 6 9]
 [2 5 8]
 [1 4 7]] 

===== right_90 =====
 [[7 4 1]
 [8 5 2]
 [9 6 3]] 
'''
  • 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
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

特别鸣谢:
https://blog.csdn.net/kane7csdn/article/details/83928848



所属网站分类: 技术文章 > 博客

作者:j878

链接:https://www.pythonheidong.com/blog/article/53049/35b46fe8a3b303d03006/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

17 0
收藏该文
已收藏

评论内容:(最多支持255个字符)