在python中绘图:我的数组具有相同的维度,但是解释器抱怨它们不是

时间:2015-10-29 03:30:42

标签: python arrays numpy matplotlib scipy

我是一个蟒蛇新手;试图从matlab迁移。但是我在下面的代码中收到以下错误:ValueError:x和y必须具有相同的第一个维度

我似乎不明白为什么我的阵列都有101个元素:

import numpy as np
import scipy as sc
import pylab as py
import matplotlib as plt
k=1
y=[None]*101
#print(y)
for i in sc.arange(0.0,10,0.1):
    y[k]=np.log(i)
    #print(y[k])
    k=k+1


j=sc.arange(0.0,10,0.1)
#y=np.array(y)
#j=np.array(j)
py.plot(y,j)
py.show()

1 个答案:

答案 0 :(得分:0)

你的问题源于Matlab和numpy / scipy之间的一些根本区别。

首先,python中的数组从0开始索引,而不是Matlab中的1。因此,变量k应该从0开始。

这里的另一个问题是你假设arange(0, 10, 0.1)调用将产生与Matlab相同的101长度输出。如果你引用numpy.arange的{​​{3}},你会发现,与Matlab不同,numpy.arange不会在输出中包含高范围值。

  

值在半开区间[开始,停止] 内生成(换句话说,包括开始但不包括停止的区间)

我建议您查看documentation以更好地了解这两种语言之间的差异。