【发布时间】: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 没有随机方法
-
a的shape是什么。与在 Matlab 中一样,使用大量诊断打印。 -
a 的形状为 (1,120) 我用正确的随机函数编辑!
-
a[0,state]和d = np.zeros(125)有效。检查阵列的形状。 python 会 [a,b-1] 因为它从 0 开始
标签: python arrays matlab numpy