【问题标题】:Transforming grid from matlab to python将网格从 matlab 转换为 python
【发布时间】:2021-05-14 19:55:37
【问题描述】:

如何将下面的命令从 Matlab 转换为 Python?

K = 25;         % # points.
    
y0min = 0.1;
    
y0max = 3;
    
y0 = [y0min:(y0max-y0min)./(K-1):y0max]';

【问题讨论】:

标签: python matlab numpy


【解决方案1】:

list comprehension 可以解决问题:

In [7]: K = 25

In [8]: y0min = 0.1

In [9]: y0max = 3

In [10]: dy = (y0max - y0min)/(K - 1)

In [11]: [y0min + i*dy for i in range(K)]
Out[11]: 
[0.1,
 0.22083333333333333,
 0.3416666666666667,
 0.4625,
 0.5833333333333334,
 0.7041666666666666,
 0.825,
 0.9458333333333333,
 1.0666666666666667,
 1.1875,
 1.3083333333333333,
 1.4291666666666667,
 1.55,
 1.6708333333333334,
 1.7916666666666667,
 1.9125,
 2.033333333333333,
 2.154166666666667,
 2.275,
 2.3958333333333335,
 2.5166666666666666,
 2.6375,
 2.7583333333333333,
 2.879166666666667,
 3.0]

如果你被允许使用 NumPy,linspace() 就是你的朋友:

In [12]: import numpy as np

In [13]: np.linspace(y0min, y0max, K)
Out[13]: 
array([0.1       , 0.22083333, 0.34166667, 0.4625    , 0.58333333,
       0.70416667, 0.825     , 0.94583333, 1.06666667, 1.1875    ,
       1.30833333, 1.42916667, 1.55      , 1.67083333, 1.79166667,
       1.9125    , 2.03333333, 2.15416667, 2.275     , 2.39583333,
       2.51666667, 2.6375    , 2.75833333, 2.87916667, 3.        ])

【讨论】:

  • 是否可以将这个用 linspace 创建的向量 y_0 转换为列向量 (Kx1)?在上面的matlab代码中有一个转置符号(')(从1x k到k x 1)。
  • 试试这个:y0 = np.linspace(y0min, y0max, K)[:, None]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 2017-11-23
  • 2021-11-16
相关资源
最近更新 更多