Python:如何使用列表作为具有恒定系数的参数?

时间:2016-02-23 01:52:10

标签: python arrays list function numpy

我使用Python绘制函数及其参数作为列表(作为解决微分方程的程序的一部分)。首先,我的自变量存储在列表 x_array = [xi] 中,其中 xi 是初始值。然后我在while循环中使用这个数组,其中行 x + = dx x_array.append(x)允许我根据需要填充此数组。

我遇到的问题是当我尝试绘制分析函数时。

具体来说,这条线不起作用:

plt.plot(x_array, 10*np.cos(3*x_array), label = "Analytical Solution")

但这条线有效:

plt.plot(x_array, 10*np.cos(x_array), label = "Analytical Solution")

这里唯一的区别是cos(3 * x_array)参数中的常量标量系数为3。

这是我得到的错误消息: ValueError:x和y必须具有相同的第一维。已经导入了必需的库numpy和matplotlib,所以没有问题。

什么是正确的语法,允许我在参数内部使用常量系数绘制函数,同时仍然使用列表?

2 个答案:

答案 0 :(得分:0)

尝试使用module Companyable extend ActiveSupport::Concern module ClassMethods def for_company(id) where(:company_id => id) end end end class Order < ActiveRecord::Base include Companyable def self.for_company(id) super(id).where.not(:status => 'cancelled') end end

将列表转换为numpy array

或者,使用列表理解:np.array(x_array)

[3 * i for i in x_array]

plt.plot(x_array, 10*np.cos(3*np.array(x_array)), label = "Analytical Solution")

答案 1 :(得分:0)

x_array实际上并不是一个数组,而是一个python列表。

所以发生了什么:

x_array = [1,2,3]  #as an example
x_array*3 = [1,2,3,1,2,3,1,2,3]  # that's what *3 after a list does

相反,如果将x_array转换为numpy数组,则乘法将按预期工作。

x_array = np.array(x_array) # array([1,2,3])
x_array = x_array *3 # array([3,6,9])