用序列创建的numpy数组

发布于 2021-01-29 17:13:19

我正在从MATLAB过渡到scipy(+ numpy)+
matplotlib。在执行某些事情时,我总是遇到问题。我想在三个不同的部分中创建一个简单的向量数组。在MATLAB中,我将执行以下操作:

vector=[0.2,1:60,60.8];

这导致62个位置的一维数组。我正在尝试使用scipy来实现。我现在最接近的是:

a=[[0.2],linspace(1,60,60),[60.8]]

但是,这将创建一个列表,而不是数组,因此我无法将其重塑为向量数组。但是然后,当我这样做时,我得到一个错误

a=array([[0.2],linspace(1,60,60),[60.8]])
ValueError: setting an array element with a sequence.

我相信我的主要障碍是我不知道如何在MATLAB中转换此简单操作:

a=[1:2:20];

麻木。我不知道如何创建数组来访问数组中的位置。任何帮助将不胜感激,谢谢!

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    好吧NumPy使用 两个 函数而不是一个来实现MATLAB的数组创建函数 vector ,每个函数隐式地指定一个特定的轴,沿着该轴应该发生 级联
    。这些功能是:

    • r_ (行级联)和

    • c_ (列方式)

    因此,对于您的示例,NumPy等效项是:

    >>> import numpy as NP
    
    >>> v = NP.r_[.2, 1:10, 60.8]
    
    >>> print(v)
         [  0.2   1.    2.    3.    4.    5.    6.    7.    8.    9.   60.8]
    

    按列的对应项是:

    >>> NP.c_[.2, 1:10, 60.8]
    

    切片 符号按预期方式工作[ start:stop:step ]:

    >>> v = NP.r_[.2, 1:25:7, 60.8]
    
    >>> v
      array([  0.2,   1. ,   8. ,  15. ,  22. ,  60.8])
    

    尽管如果将 虚数 用作第三个参数,则切片符号的行为类似于 linspace

    >>> v = NP.r_[.2, 1:25:7j, 60.8]
    
    >>> v
      array([  0.2,   1. ,   5. ,   9. ,  13. ,  17. ,  21. ,  25. ,  60.8])
    

    否则,其行为类似于 arange

    >>> v = NP.r_[.2, 1:25:7, 60.8]
    
    >>> v
      array([  0.2,   1. ,   8. ,  15. ,  22. ,  60.8])
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看