【问题标题】:array manipulation from MATLAB to Python [closed]从 MATLAB 到 Python 的数组操作 [关闭]
【发布时间】:2016-05-07 18:03:26
【问题描述】:

来自 MATLAB 代码:

a = rand(1,120);
    d=zeros(1,124);
    state=[1:120];
    fibre = [1  5   9   13  17  2   6   10  14  18  3   7   11  15  19  4   8   12  16  20  21  69  65  61  57  22  68  64  60  56  71  67  63  59  55  70  66  62  58  54  53  49  45  41  37  52  48  44  40  36  51  47  43  39  35  50  46  42  38  34  121 117 113 109 105 120 116 112 108 104 119 115 111 107 103 118 114 110 106 102 101 97  93  89  85  100 96  92  88  84  99  95  91  87  83  98  94  90  86  82  81  79  77  75  33  80  27  29  31  122 25  78  76  74  123 26  28  30  32  124];
    d(fibre)=a(state);

到 Python 代码:

import numpy as np
a = np.arange(120,219,1)
d=np.zeros([124])
state = np.arange(0,120,1)
fibre = np.array([1,5,9,13,17,2,6,10,14,18,3,7,11,15,19,4,8,12,16,20,21,69,65,61,57,22,68,64,60,56,71,67,63,59,55,70,66,62,58,54,53,49,45,41,37,52,48,44,40,36,51,47,43,39,35,50,46,42,38,34,121,117,113,109,105,120,116,112,108,104,119,115,111,107,103,118,114,110,106,102,101,97,93,89,85,100,96,92,88,84,99,95,91,87,83,98,94,90,86,82,81,79,77,75,33,80,27,29,31,122,25,78,76,74,123,26,28,30,32,124,72,73,23,24])
d[fibre]=a[state]

python 代码在数组大小方面抛出异常,有什么建议可以解决这个问题吗?

【问题讨论】:

  • Python 索引从0 开始,所以d[124] 不存在。
  • 您的代码有问题。 numpy 没有随机方法
  • ashape 是什么。与在 Matlab 中一样,使用大量诊断打印。
  • a 的形状为 (1,120) 我用正确的随机函数编辑!
  • a[0,state]d = np.zeros(125) 有效。检查阵列的形状。 python 会 [a,b-1] 因为它从 0 开始

标签: python arrays matlab numpy


【解决方案1】:

您的 python 脚本有两个关于 Matlab 代码的问题: 在第二行中,您应该生成随机数,例如:

a = np.random.rand(120)

最后一行,就像 cmets 所说的,你应该知道 Matlab 中的索引从 1 开始,python 从 0 开始,所以你的最后一行是:

d[fibre-1]=a[state]

【讨论】:

  • 我正在尝试这样:d=np.zeros([124]) state = np.arange(0,120,1) JV_fibre = np.array([1,5,9,13,17,2,6,10,14,18,3,7,11,15,19,4,8,12,16,20,21,69,65,61,57,22,68,64,60,56,71,67,63,59,55,70,66,62,58,54,53,49,45,41,37,52,48,44,40,36,51,47,43,39,35,50,46,42,38,34,121,117,113,109,105,120,116,112,108,104,119,115,111,107,103,118,114,110,106,102,101,97,93,89,85,100,96,92,88,84,99,95,91,87,83,98,94,90,86,82,81,79,77,75,33,80,27,29,31,122,25,78,76,74,123,26,28,30,32,124]) JV_fibre = JV_fibre -1 d[JV_fibre] = a[state] 并且不工作。
  • 我的工作正常!!你如何生成一个?
  • 你是对的。我在程序的另一部分遇到了问题/
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
相关资源
最近更新 更多