python - 使用序列创建的 numpy 数组

标签 python arrays numpy scipy sequence

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

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

这会产生一个包含 62 个位置的一维数组。我正在尝试使用 scipy 来实现这一点。我现在最接近的是:

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

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

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

我相信我的主要障碍是我不知道如何在 MATLAB 中翻译这个简单的操作:

a=[1:2:20];

到 numpy.我知道如何访问数组中的位置,尽管在创建序列时不知道。 任何帮助将不胜感激, 谢谢!

最佳答案

NumPy 实现了 MATLAB 的数组创建函数,vector,使用 两个 函数而不是一个 - 每个都隐含指定一个特定的轴,concatenation em> 应该发生。这些功能是:

  • 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]

slice 符号按预期工作 [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])

关于python - 使用序列创建的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10753528/

相关文章:

python - llvm 可以从托管语言执行代码吗?

python - 如何以这种特定方式对 2D numpy 数组进行排序

javascript - JQuery:如何获取 DOM 树中所有最底层的 child ?

python - Tornado gzip 压缩特定 RequestHandler 的响应

python - 无法使用 PayPal 模块处理交易

python - 我该如何将StringVar()放入StringVar()中?

PHP 变量函数数组值

python - 压缩不均匀的 numpy 数组

python - 如何在 cython 中从 c 数组公开一个 numpy 数组?

python - 在 Python 中重复数组([x,y,z])的最短代码