python和matlab中reshape函数的区别

将一段代码从matlab改为Python, 总是出来的结果与之前matlab的结果相去甚远, 接着尝试各种方法的结果是否一致,
最后将信将疑的试了reshape, 结果声泪俱下, 真的是这个函数, google一下……

MATLAB

>> mat = [1:12]

mat =

     1     2     3     4     5     6     7     8     9    10    11    12

>> reshape(mat,[3,4])

ans =

     1     4     7    10
     2     5     8    11
     3     6     9    12
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

PYTHON

mat = np.arange(1,13)

mat

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])

r = np.reshape(mat,(3,4))

array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

r.shape

(3, 4)

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

相同的代码matlab 与python出现了不同的排布方式.

PYTHON修正代码

r = np.reshape(mat, (3,4), order="F")

r
array([[ 1,  4,  7, 10],
       [ 2,  5,  8, 11],
       [ 3,  6,  9, 12]])
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

解释

需要在python程序中指明使用Fortran order, 如

np.reshape(matrix, (n,n), order="F")
   
   
  • 1
  • 1

Numpy默认是C order, Matlab是 Fortran order.

转载来源:http://blog.csdn.net/yangziluomu/article/details/51277590

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
`reshape`是MATLAB的一个函数,用于将矩阵的行列重新排列。可以通过指定行数和列数来重新排列矩阵,也可以通过指定一个包含行数和列数的向量来实现。例如,`A = reshape(A, m, n)`或者`A = reshape(A, [m, n])`都可以将矩阵A重新排列成m行n列的形式。`reshape`函数按列取数据,即先按列取一列数据,然后再按列取下一列数据。例如,如果有一个矩阵A = [1 4 7 10; 2 5 8 11; 3 6 9 12],则可以使用`reshape(A, 2, 6)`将其重新排列为2行6列的矩阵。结果将变为: 1 3 5 7 9 11 2 4 6 8 10 12。不论如何对A进行重排,只要最终重排成最初的3*4的形式,结果将始终相同,即reshape(A, 3, 4)的结果将为:1 4 7 10 2 5 8 11 3 6 9 12。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [matlabreshape 函数](https://blog.csdn.net/sinat_28442665/article/details/83273372)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python基于BERT的预训练模型,对多个大数据库进行预训练,并使用自定义的预训练模型进行微调的代码(4200字...](https://download.csdn.net/download/weixin_44609920/88283823)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值