数组操作等效Python和Matlab

mar*_*rco 2 python arrays matlab numpy

我想用python编写相当于Matlab中的这段代码,

   zeta = zeros(1,5)
   alpha=[1e5,1e3,1e5,1e7,1e3];
   dz = 0.001;
   for i=1:length(zeta)
       zeta(i) = alpha(i)/(dz*dz);
   end
Run Code Online (Sandbox Code Playgroud)

编辑:感谢所有答案,它们都非常有用,并且正在帮助理解python如何工作,并且似乎也是Matlab; 因为我没有得到数组和矩阵运算的全部功能.我的初始编程语言是C.

现在,我正在尝试计算如何在python循环和数组操作中进行编码.如果你能提供帮助.(zeta来自上一个代码)

nl= 7;
l=[0.3,0.1,0.2,0.1,0.1,0.1,0.3)   
wz=zeros(1,nl);         %layer width
temp=0;                 %auxiliary temp variable

for i=1:nl
    wz(i)=l(1,i)*(nz-1)+temp;
    temp=wz(1,i);
end
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 6

import numpy as np

alpha = np.array([1e5, 1e3, 1e5, 1e7, 1e3])
dz = 0.001
zeta = alpha / dz**2
Run Code Online (Sandbox Code Playgroud)

  • @MaxLi:我仍然没有明白你的意思.`zeta = np.zeros(5); zeta [:] = alpha/dz**2`?这不会更快,是吗? (2认同)
  • 仅仅是为了澄清,@Max Li所指的是,如果你尝试将索引超出其大小,matlab将根据需要调整数组大小.例如`a = 1:5; a(100)= 1;`将调整`a`调整为1x100数组.因此,您需要在迭代它们之前预先分配数组.在python中,如果你索引超出其边界的东西,你将引发一个`IndexError`. (2认同)