转换维度python_Python numpy数组维度转换(维度转换),pythonnumpyarray,转维

在实践中,经常需要对中间数据或输出数据进行维度转换,保证多个数据间计算维度上的一致性。

一般主要涉及pytorch中tensorde的维度转换、numpy中array的维度转换。本篇先对array的维度转换方法进行总结,涉及的转换方法如下:

# reshape()

# ravel()

# flatten()

# transpose()

# resize()

具体用法:

array_01 = np.arange(24)

print('\narray_01:\n', array_01, '\narray shape:', array_01.shape)

# 输出:array_01是一个一维数组,数组元素24个

# array_01:

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

# array shape: (24,)

# reshape(n1,n2,...,ni)将数组转换成特定维度

# n1*n2*...*ni = 转换前数组元素的总数

array_02 = array_01.reshape(3, 2, 4)

print('\narray_02:\n', array_02, '\narray shape:', array_02.shape)

# 输出:array_02是一个三维数组,channel为3,2行4列,3*2*4=24

# array_02:

# [[[ 0 1 2 3]

# [ 4 5 6 7]]

#

# [[ 8 9 10 11]

# [12 13 14 15]]

#

# [[16 17 18 19]

# [20 21 22 23]]]

# array shape: (3, 2, 4)

# ravel将多维数组转换为一维

array_03 = array_02.ravel()

print('\narray_03:\n', array_03, '\narray shape:', array_03.shape)

# 输出:array_03是一个一维数组,数组元素24个

# array_03:

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

# array shape: (24,)

# flatten,与ravel相同,区别在是否拷贝

array_04 = array_02.flatten()

print('\narray_04:\n', array_04, '\narray shape:', array_04.shape)

# 输出:array_04是一个一维数组,数组元素24个

# array_04:

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

# array shape: (24,)

# transpose转换坐标系,transpose(1, 2, 0)括号里的值表示坐标系的索引号

# 原始的坐标系为[c,h,w] 0-c,1-h,2-w

# 变换后的坐标系统[h,w,c]

array_05 = array_02.transpose(1, 2, 0)

print('\narray_05:\n', array_05, '\narray shape:', array_05.shape)

# 输出:array_05是一个三维数组

# array_05:

# [[[ 0 8 16]

# [ 1 9 17]

# [ 2 10 18]

# [ 3 11 19]]

#

# [[ 4 12 20]

# [ 5 13 21]

# [ 6 14 22]

# [ 7 15 23]]]

# array shape: (2, 4, 3)

你可能感兴趣的:(转换维度python)