昊虹君 发表于 2022-11-26 22:56

利用Numpy库的方法reshape()对ndarray对象矩阵的形状进行调整

利用Numpy库的方法reshape()对ndarray对象矩阵的形状进行调整

调整矩阵或图像的形状是一个常用的操作。
在Numpy库中,可使用函数reshape()实现此操作。

其函数原型如下:
dst = numpy.reshape(a, newshape[, order='C'])
参数意义如下:
a—需要调整形状的矩阵。
newshape—调整后矩阵的形状,用一个元组进行表示。可将某个维度的值设为-1,此时这个维度的值函数会根据矩阵元素的个数自动计数出。
order—这个参数的可选值有C、F、A,默认值为C,这个参数大家一般不需要理解,用默认的值‘C’就可以。如果想详细了解,可以参考我的另一篇博文:https://www.hhai.cc/thread-154-1-1.html

使用函数reshape()时需要注意,调整后的尺寸应和矩阵的元素个数兼容,比如12个元素的矩阵,我们可以分成(4,3)或(2,6),但不能分成(3,5)。

函数reshape()的使用很简单,大家看下面的示例代码便知道怎么用了:

# -*- coding: utf-8 -*-
# 出处:昊虹AI笔记网(hhai.cc)
# 用心记录计算机视觉和AI技术

# 博主微信/QQ 2487872782
# QQ群 271891601
# 欢迎技术交流与咨询

# OpenCV的版本为4.4.0

import numpy as np

if __name__ == '__main__':
    # 新建矩阵A1
    A1 = np.array()
    # 将A1调整为3*4的单通道图像(矩阵)
    img1 = A1.reshape((3, 4))

    # 将A1调整为 2*2*3的两通道图像(矩阵)
    img2 = A1.reshape((2, 2, 3))

    # 将某一维度的值设为-1,函数自动计算出其值
    img3 = A1.reshape((2, 2, -1))
运行结果如下图所示:
http://pic1.hhai.cc/pic1/2022/2022-11/005/41.png
                                          
http://pic1.hhai.cc/pic1/2022/2022-11/005/42.png
                                          
http://pic1.hhai.cc/pic1/2022/2022-11/005/43.png
                                          
http://pic1.hhai.cc/pic1/2022/2022-11/005/44.png
                                          
http://pic1.hhai.cc/pic1/2022/2022-11/005/45.png
页: [1]
查看完整版本: 利用Numpy库的方法reshape()对ndarray对象矩阵的形状进行调整