Skip to main content
 首页 » 编程设计

python之将数组从 MATLAB 转换为 numpy

2025年05月04日15www_RR

我正在定义一个数组,两端各有一个。在 MATLAB 中,这可以通过以下方式实现

x = [1 2*ones(1,3) 1] 

然而,在 Python 中,numpy 给出了完全不同的东西:

import numpy 
numpy.array([[1],2*numpy.ones(3),[1]]) 

在 Python 中执行此 MATLAB 命令的最有效方法是什么?

请您参考如下方法:

In [33]: import numpy as np 
 
In [34]: np.r_[1, 2*np.ones(3), 1] 
Out[34]: array([ 1.,  2.,  2.,  2.,  1.]) 

或者,您可以使用 hstack:

In [42]: np.hstack(([1], 2*np.ones(3), [1])) 
Out[42]: array([ 1.,  2.,  2.,  2.,  1.]) 

In [45]: %timeit np.r_[1, 2*np.ones(300), 1] 
10000 loops, best of 3: 27.5 us per loop 
 
In [46]: %timeit np.hstack(([1], 2*np.ones(300), [1])) 
10000 loops, best of 3: 26.4 us per loop 
 
In [48]: %timeit np.append([1],np.append(2*np.ones(300)[:],[1])) 
10000 loops, best of 3: 28.2 us per loop 

感谢 DSM 指出从一开始就预先分配大小合适的数组,这比使用 r_ 或 hstack 添加要快得多较小的数组:

In [49]: %timeit a = 2*np.ones(300+2); a[0] = 1; a[-1] = 1 
100000 loops, best of 3: 6.79 us per loop 
 
In [50]: %timeit a = np.empty(300+2); a.fill(2); a[0] = 1; a[-1] = 1 
1000000 loops, best of 3: 1.73 us per loop