我有一组点,在这些点上我使用 scipy 来计算插值多项式。我希望拥有该函数的原语
self.p=interpolate.interp1d(self.__discreteDistribution['x'], self.__discreteDistribution['y'], kind='cubic')
Run Code Online (Sandbox Code Playgroud)
我可以轻松地使用 scipy 计算一个区间内的积分值,使用
integrate.quad(self.p, 0, max)
Run Code Online (Sandbox Code Playgroud)
我想要的是拥有 self.p() 的原语。我找到了 sympy,但我没有插值多项式的分析版本。
在这种情况下你会做什么?
我正在求解大型方程组,但可以使用雅可比矩阵。
我决定使用 scipy.optimize.root (接受其他建议),在这里我可以将雅可比作为额外的可调用对象传递。唯一的问题是我的雅可比包含额外的常量,例如。
对于本例,需要求解 y、z,k 是一个常数
import scipy.optimize
def fun(x, k):
[y, z]= x
return [k*y**2 + z**2 - 25, k*z*y ]
def jacobian(x, k):
[y, z] = x
j = [[2*k*y, 2*z],
[ k*z, k*y]]
return j
solution = scipy.optimize.root(fun, [x1, x2], jaco=(jacobian, value_for_k))
Run Code Online (Sandbox Code Playgroud) 我遇到了一个奇怪的情况,pd.describe 给我的百分位标记与 scipy.stats percentileofscore 不一致,我认为是因为 NaN。
我的 df 是:
f_recommend
0 3.857143
1 4.500000
2 4.458333
3 NaN
4 3.600000
5 NaN
6 4.285714
7 3.587065
8 4.200000
9 NaN
Run Code Online (Sandbox Code Playgroud)
当我跑步时df.describe(percentiles=[.25, .5, .75])我得到:
f_recommend
count 7.000000
mean 4.069751
std 0.386990
min 3.587065
25% 3.728571
50% 4.200000
75% 4.372024
max 4.500000
Run Code Online (Sandbox Code Playgroud)
当我删除 NaN 运行时,我得到相同的值。
然而,当我想查找特定值时,当我运行时,scipy.stats.percentileofscore(df['f_recommend'], 3.61, kind = 'mean')我得到:第 28 个百分位数包含 NaN,第 20 个百分位数不包含 NaN。
有什么想法可以解释这种差异吗?
预计到达时间:
我不认为问题在于我们计算百分位数的方式不同。因为只有当您以不同的方式计算相同的两个数字的百分位数时,这才重要。但在这里,describe 给出的 25 个百分位为 3.72。所以 3.61 绝对不可能是第 28 个百分位。没有一个公式可以给出这一点。
特别是,当我对不带 …
我有一个 nd 数组,如下所示:
[[ 0. 1.73205081 6.40312424 7.21110255 2.44948974]
[ 1.73205081 0. 5.09901951 5.91607978 1. ]
[ 6.40312424 5.09901951 0. 1. 4.35889894]
[ 7.21110255 5.91607978 1. 0. 5.09901951]
[ 2.44948974 1. 4.35889894 5.09901951 0. ]]
Run Code Online (Sandbox Code Playgroud)
该数组中的每个元素都是一个距离,我需要将其转换为包含行、列、距离的列表,如下所示:
l = [(0,0,0),(0,1, 1.73205081),(0,2, 6.40312424),...,(1,0, 1.73205081),(1,1,0),...,(4,4,0)]
Run Code Online (Sandbox Code Playgroud)
此外,删除对角线元素会很酷,而且元素 (j,i) 因为 (i,j) 已经存在。本质上,是否可以只取它的顶部三角矩阵?
这是否可以有效地完成(没有很多循环)?我用 squareform 创建了这个数组,但找不到任何文档来执行此操作。
我想在Python中将*.sav文件的内容转换为*.csv文件。我编写了以下代码行来访问 *.sav 文件中变量的详细信息。现在,我不清楚如何将访问的变量数据写入带有标题的 .csv 文件
import scipy.io as spio
on2file = 'ON2_2015_112m_220415.sav'
on2data = spio.readsav(on2file, python_dict=True, verbose=True)
Run Code Online (Sandbox Code Playgroud)
以下是我运行上述代码行时的结果:
IDL Save file is compressed
-> expanding to /var/folders/z4/r3844ql123jgkq1ztdr4jxrm0000gn/T/tmpVE_Iz6.sav
--------------------------------------------------
Date: Mon Feb 15 20:41:02 2016
User: zhangy1
Host: augur
--------------------------------------------------
Format: 9
Architecture: x86_64
Operating System: linux
IDL Version: 7.0
--------------------------------------------------
Successfully read 11 records of which:
- 7 are of type VARIABLE
- 1 are of type TIMESTAMP
- 1 are of type NOTICE
- 1 are of type VERSION …Run Code Online (Sandbox Code Playgroud) 我编写了一个小程序,根据文档,使用 pvlib 的 ModelChain() 和 get_processed_data() 方法,获取纬度和经度并返回该站点的预测发电量。
一切都工作正常,直到大约一个小时前,当时 - 没有对我的 python 代码进行任何更改 - 我突然开始收到以下错误:
ImportError:Linke 浊度查找表需要 scipy。如果您提供自己的浊度,您仍然可以使用clearsky.ineichen。
快速谷歌告诉我这与 pvlib 中的“clearsky”模块有关 - 请参阅http://pvlib-python.readthedocs.io/en/latest/_modules/pvlib/clearsky.html
但是,我不知道为什么这突然不起作用,或者发生了什么变化。我在我的 IDE (cloud9) 中尝试了“pip install scipy”,并得到了响应:
已满足要求:/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages 中的 scipy 已满足要求:/opt/pyenv/versions/3.6.0/lib/ 中的 numpy>=1.8.2 python3.6/site-packages(来自 scipy)
如果有人可以提供帮助,我将非常感激 - 我“非常接近”完成我的项目!
我想解决以下颂歌
K T + C T' = Q
给定的示例数据是我下面的代码
import numpy as np
import scipy as sp
# Solve the following ODE
# K*T + C*T' = Q
# T' = C^-1 ( Q - K * T )
T_start=sp.array([ 151.26, 132.18, 131.64, 146.55, 147.87, 137.87])
K = sp.array([[-0.01761969, 0.02704873, 0.00572222, 0. , 0. ,
0. ],
[ 0.02704873, -0.03546941, 0. , 0. , 0.00513177,
0. ],
[ 0.00572222, 0. , 0.03001858, -0.04752982, 0. ,
0.02030505],
[ 0. , 0. …Run Code Online (Sandbox Code Playgroud) 我有一个包含一些元素的稀疏矩阵。现在我想对其进行标准化。但是,当我这样做时,它会转换为 numpy 数组,从性能的角度来看,这是不可接受的。
为了使事情更具体,请考虑以下示例:
x = csr_matrix([[0, 1, 1], [2, 3, 0]]) # sparse
normalization = x.sum(axis=1) # dense, this is OK
x / normalization # this is dense, not OK, can be huge
Run Code Online (Sandbox Code Playgroud)
有没有一种优雅的方法可以做到这一点而不必诉诸 for 循环?
编辑
是的,这可以使用“l1”标准化来完成sklearn.preprocessing.normalize,但是,我不想依赖 sklearn。
我有一个问题:我试图找到一个函数的最小值,该函数取决于我也想更改的几个参数。让我们举一个简化的例子:
import numpy as np
import scipy.optimize as opt
def f(x, a, b, c):
f = a * x**2 + b * x + c
return f
Run Code Online (Sandbox Code Playgroud)
我想找到使 a、b、c 的不同值集的函数最小化的 x,比如说
a = [-1, 0, 1]
b = [0, 1, 2]
c = [0, 1]
Run Code Online (Sandbox Code Playgroud)
ATM 我有三个嵌套循环和一个最小化:
for p1 in a:
for p2 in b:
for p3 in c:
y = opt.minimize(f, x0=[0, ], args=(p1, p2, p3, ))
print(y)
Run Code Online (Sandbox Code Playgroud)
这对于我正在进行的计算来说确实很慢,但到目前为止我还没有找到更好的方法。那么,有谁知道一种可以让我提高效率的方法或方案吗?
在Python中,dct()scipy中和matlab中类似dct2(),那么Python中有没有类似于matlab中dctmtx的库呢?
scipy ×10
python ×8
numpy ×7
python-3.x ×3
csv ×1
dct ×1
integral ×1
matlab ×1
minimize ×1
ode ×1
optimization ×1
pandas ×1
pdist ×1
percentile ×1
pvlib ×1