小编Eri*_*c B的帖子

在python中最小化函数的最快方法是什么?

所以我有以下问题要尽量减少.我有一个w我需要找到的向量,以便最小化以下功能:

import numpy as np
from scipy.optimize import minimize

matrix = np.array([[1.0, 1.5, -2.],
                   [0.5, 3.0, 2.5],
                   [1.0, 0.25, 0.75]])

def fct(x):
    return x.dot(matrix).dot(x)

x0 = np.ones(3) / 3
cons = ({'type': 'eq', 'fun': lambda x: x.sum() - 1.0})
bnds = [(0, 1)] * 3

w = minimize(fct, x0, method='SLSQP', bounds=bnds, constraints=cons)['x']
Run Code Online (Sandbox Code Playgroud)

我选择了method='SLSQP'因为它似乎是唯一一个允许boundsconstraints.我的问题是我必须在多个选择上循环我的解决方案,所以我想在这里获得一些速度.我的解决方案是使用优化器的最快的解决方案还是还有其他更快的解决方案?谢谢.

python scipy

8
推荐指数
1
解决办法
1万
查看次数

根据开始和结束列(速度)扩展数据帧

我有一个pandas.DataFrame包含列startend列,以及几个额外的列.我想将此数据框扩展为以start值开始并以值结束的时间序列end,但复制其他列.到目前为止,我想出了以下内容:

import pandas as pd
import datetime as dt

df = pd.DataFrame()
df['start'] = [dt.datetime(2017, 4, 3), dt.datetime(2017, 4, 5), dt.datetime(2017, 4, 10)]
df['end'] = [dt.datetime(2017, 4, 10), dt.datetime(2017, 4, 12), dt.datetime(2017, 4, 17)]
df['country'] = ['US', 'EU', 'UK']
df['letter'] = ['a', 'b', 'c']

data_series = list()
for row in df.itertuples():
    time_range = pd.bdate_range(row.start, row.end)
    s = len(time_range)
    data_series += (zip(time_range, [row.start]*s, [row.end]*s, [row.country]*s, [row.letter]*s))

columns_names = ['date', 'start', 'end', …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

8
推荐指数
3
解决办法
1292
查看次数

根据包含pandas中特定字符串的列名称选择列

我使用以下方法创建了一个数据框:

df = pd.DataFrame(np.random.rand(10, 3), columns=['alp1', 'alp2', 'bet1'])
Run Code Online (Sandbox Code Playgroud)

我想获得含有从每列的数据帧df具有alp在他们的名字.这只是我的问题的简单版本,所以我的真实数据框将有更多的列.

python pandas

6
推荐指数
3
解决办法
1万
查看次数

在二维数组上使用numpy.interp的最快方法

我有以下问题.我试图找到在x坐标的二维数组上使用numpy插值方法的最快方法.

import numpy as np

xp = [0.0, 0.25, 0.5, 0.75, 1.0]

np.random.seed(100)
x = np.random.rand(10)
fp = np.random.rand(10, 5)
Run Code Online (Sandbox Code Playgroud)

所以基本上,xp将是数据点的x坐标,x将是包含我想要插值的值的x坐标的数组,并且fp将是包含数据点的y坐标的2-D数组.

xp
[0.0, 0.25, 0.5, 0.75, 1.0]

x
array([ 0.54340494,  0.27836939,  0.42451759,  0.84477613,  0.00471886,
        0.12156912,  0.67074908,  0.82585276,  0.13670659,  0.57509333])

fp
array([[ 0.89132195,  0.20920212,  0.18532822,  0.10837689,  0.21969749],
       [ 0.97862378,  0.81168315,  0.17194101,  0.81622475,  0.27407375],
       [ 0.43170418,  0.94002982,  0.81764938,  0.33611195,  0.17541045],
       [ 0.37283205,  0.00568851,  0.25242635,  0.79566251,  0.01525497],
       [ 0.59884338,  0.60380454,  0.10514769,  0.38194344,  0.03647606],
       [ 0.89041156,  0.98092086,  0.05994199, …
Run Code Online (Sandbox Code Playgroud)

interpolation numpy linear-interpolation

5
推荐指数
1
解决办法
4385
查看次数

基于两列pandas映射dict字典的最有效方法

我有以下问题:我想在a dictdict基于2列映射一个pandas dataframe.但是,到目前为止我提出的唯一解决方案是使用apply.问题是我的数据帧有超过一百万行,所以使用时间apply可能很长.关于如何更有效地做到这一点的任何想法?到目前为止,这是我的代码:

import pandas as pd
import numpy as np

dict_dict = {'A': {'a': 1, 'b': 2, 'c': 3},
             'B': {'a': 4, 'b': 5, 'c': 6},
             'C': {'a': 7, 'b': 8, 'c': 9},
             'D': {'a': 10, 'b': 11, 'c': 12}}

list1 = ['A', 'B', 'C']
list2 = ['a', 'b', 'c']

np.random.seed(100)

df = pd.DataFrame()
df['col1'] = np.random.choice(list1, 10)
df['col2'] = np.random.choice(list2, 10)

df['map'] = df.apply(lambda x: dict_dict[x.col1][x.col2], axis=1)

df

  col1 …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

4
推荐指数
1
解决办法
80
查看次数

提取列表中嵌入的字典项

假设我有以下dict列表

t = [{'a': 1.0, 'b': 2.0},
     {'a': 3.0, 'b': 4.0},
     {'a': 5.0, 'b': 6.0},
     {'a': 7.0, 'b': 9.0},
     {'a': 9.0, 'b': 0.0}]
Run Code Online (Sandbox Code Playgroud)

是否有一种有效的方法来提取字典中包含的所有值,字典键值为a

到目前为止,我已经提出了以下解决方案

x = []
for j in t:
    x.append(j['a'])
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢循环使用项目,并且正在寻找一种更好的方法来实现这一目标.

python dictionary list

3
推荐指数
1
解决办法
4360
查看次数

使用样式器格式化数据框索引和列

我对html和感到很陌生pandas dataframe styler,但这是我的问题:

我写了下面的代码

import pandas as pd

df = pd.DataFrame([1000000.0, 1000000.0], index=pd.bdate_range('2017-08-01', '2017-08-02'))

styler = df.style
styler = styler.format("{:,.0f}")
styler = styler.set_properties(**{'width': '100px', 'text-align': 'right'})
Run Code Online (Sandbox Code Playgroud)

哪个产生以下

在此处输入图片说明

我了解如何格式化dataframe正在使用的各种元素。不过,我想格式化我indexcolumn称号。特别是,我想将我index的日期格式设置为不带时间的日期,并且我想像使用值一样将column名称右对齐。更具体地说,在中有一种有效的访问indexcolumns的方式pandas styler

html css python pandas

2
推荐指数
1
解决办法
3942
查看次数