【发布时间】:2017-06-27 20:57:28
【问题描述】:
我实际上是在将一个 matlab 脚本翻译成 python,我在 python 中使用数组时遇到了问题(我仍然是初学者)numpy。 我的问题是这样的: 在 matlab 中,我正在计算几个信号的傅立叶变换,并将其动态存储在 3 x 3 数组中,例如 U。我想要做的一个简单示例如下;
l = 3 ;
c = 0 ;
for i = 1:3
for j = 1:10
c=c+1 ;
a = j + 1;
U(i,c,:)=a ;
end
end
我想将它翻译成 python,但我无法创建在 U 中动态存储“a”值的数组 U。 注意:为了简单起见,这里将“a”计算为 j+1,但在我的脚本中,“a”是一个数组(信号的傅立叶变换)
对不起,我的英语不好,我是法国人。 T
【问题讨论】:
-
你试过的python代码是什么?你得到什么错误?分配在
numpy中的工作方式非常相似。 -
MATLAB 会在您分配给它时增长一个矩阵。
numpy要求您首先初始化正确大小的数组。查看这个最近的问题,也称为dynamically、stackoverflow.com/questions/42041016/… -
您似乎事先知道数组的大小。因此,您可以先将数组预分配为:
mat = np.empty(shape=(3, 30))。检查我的形状是否正确。 -
@hpaulj 从技术上讲,MATLAB 不会增加数组,它会创建一个新数组并复制所有数据。它非常慢,在这种情况下您不应该这样做。如果你真的想的话,你可以在 numpy 中做同样的事情。不同之处在于 numpy 让您明确地进行复制,因此人们不会被愚弄认为数组是动态大小的。
标签: arrays matlab python-2.7 numpy