我使用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,所以没有问题。
什么是正确的语法,允许我在参数内部使用常量系数绘制函数,同时仍然使用列表?
答案 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
或者,使用列表理解: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])