我如何列出N(比如100)随机数,以便它们的总和为1?
我可以用随机数列表
r = [ran.random() for i in range(1,100)]
Run Code Online (Sandbox Code Playgroud)
我如何修改它以使列表总和为1(这是用于概率模拟).
我有一组很多(10000+)项,我必须从中选择20项.我只能选择一个项目.我的项目有利润和成本,以及几个布尔属性(如颜色).
我已阅读并阅读了https://developers.google.com/optimization/mip/integer_opt_cp和https://developers.google.com/optimization/mip/integer_opt中的教程,但我的约束与那些略有不同在那里.
每个项目都表示为一个元组:
item = ('item name', cost, profit, is_blue)
Run Code Online (Sandbox Code Playgroud)
举个例子
vase = ['Ming Vase', 1000, 10000, 0]
plate = ['China Plate', 10, 5, 1]
Run Code Online (Sandbox Code Playgroud)
并且项目的总集是列表列表:
items = [item1, item2, ..., itemN].
Run Code Online (Sandbox Code Playgroud)
我的利润和成本也列出:
profits = [x[2] for x in items]
costs = [x[1] for x in items]
Run Code Online (Sandbox Code Playgroud)
对于所选的每个项目,它需要具有最小值,并且至少5个项目必须将属性(is_blue)标志设置为1.
我想选择具有最高值的20个最便宜的项目,这样其中5个项目的属性标志设置为1.
我在使用谷歌OR工具制定这个问题时遇到了麻烦.
from ortools.linear_solver import pywraplp
solver = pywraplp.Solver('SolveAssignmentProblemMIP',
pywraplp.Solver.CBC_MIXED_INTEGER_PROGRAMMING)
x = {}
for i in range(MAX_ITEMS):
x[i] = solver.BoolVar('x[%s]' % (i))
#Define the constraints
total_chosen = 20 …Run Code Online (Sandbox Code Playgroud) python mathematical-optimization constraint-programming or-tools
作为最近项目的一部分,我必须从CSV文件中读取和写入并放入c#中的网格视图中.最后决定使用一个现成的解析器为我做的工作.
因为我喜欢做那种东西,我想知道如何写自己的东西.
到目前为止,我所做的就是:
//Read the header
StreamReader reader = new StreamReader(dialog.FileName);
string row = reader.ReadLine();
string[] cells = row.Split(',');
//Create the columns of the dataGridView
for (int i = 0; i < cells.Count() - 1; i++)
{
DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
column.Name = cells[i];
column.HeaderText = cells[i];
dataGridView1.Columns.Add(column);
}
//Display the contents of the file
while (reader.Peek() != -1)
{
row = reader.ReadLine();
cells = row.Split(',');
dataGridView1.Rows.Add(cells);
}
Run Code Online (Sandbox Code Playgroud)
我的问题:这样做是一个明智的想法,如果是(或不是),我将如何正确地测试它?
我是一个相对较新的MVC用户,并且很难让分页在MVC中正常工作.
基本上我有一堆搜索结果在局部视图中呈现(使用像这样的开始表单方法):
using (Ajax.BeginForm("Search", "Home", new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "searchResults",
}))
{
<input type="text" name="searchString" />
<input type="submit" value="Search" />
}
Run Code Online (Sandbox Code Playgroud)
并且部分视图因此呈现:
@foreach (var item in @Model)
Run Code Online (Sandbox Code Playgroud)
{
<li>@Html.ActionLink(item.Name, "Result/" + item.Id, "Result")</li>
}
@{if(ViewBag.HasPrevious)
{
@Html.ActionLink("<<", "Search", new { searchString = ViewBag.query, page = ViewBag.CurrentPage-1 })
}
}
@{if(ViewBag.HasNext)
{
@Html.ActionLink(">>", "Search", new { searchString = ViewBag.query, page = ViewBag.CurrentPage+1 })
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是>>或<<链接只是创建一个空白页面,其中包含结果列表,并且不会保留"顶部"索引页面的标记.
有没有人对此有任何想法.
NB我是这个网站的新手,我会提出任何答案.
我需要找到MultiIndex列的百分比(“计数”)。我的DataFrame看起来像:
count
A week1 264
week2 29
B week1 152
week2 15
Run Code Online (Sandbox Code Playgroud)
我想添加一列“百分比”
count percent
A week1 264 0.9
week2 29 0.1
B week1 152 0.91
week2 15 0.09
Run Code Online (Sandbox Code Playgroud)
我知道我可以找到想要的总数
mydf.sum(level=[0, 1])
Run Code Online (Sandbox Code Playgroud)
但我似乎无法弄清楚如何将其转换为百分比。
目前我需要将字符串交错到一个单一的列表,但是如何做到这一点却不知所措.
我目前使用的代码就是这个(我还没有走得太远):
public PartialViewResult Interleave(string details, string ids)
{
List<string> detailList = details.Split(',').ToList();
List<string> idlist = ids.Split(',').ToList();
return PartialView("_ConceptDetail1", detailList)
}
Run Code Online (Sandbox Code Playgroud)
有没有标准的方法来交错列表?
我正在尝试在numpy中构建另一个数组条目的部分产品数组.到目前为止,我有:
from numpy.random import dirichlet
from numpy import ones, prod
alpha = ones(100)
p = dirichlet(alpha)
Run Code Online (Sandbox Code Playgroud)
我知道通过切割我的数组,我可以做任何部分产品.例如:
q = prod(p[0:10])
Run Code Online (Sandbox Code Playgroud)
返回前10个条目的乘积p.
我怎样才能构建数组,q以便输入i是i-1以前值的乘积p?
我试过了:
for i in p:
q[i+1] = prod(p[0:i-1])
Run Code Online (Sandbox Code Playgroud)
但是,这会抛出numpy.float64不支持项目分配错误.
我该如何构建这个阵列?对于资金,我能不能代替prod用sum?
我正在使用 Emacs 24 并尝试使用该elpy包,但收到错误:
“符号的函数定义无效:elpy-enable”
(package-initialize)
(elpy-enable)
(elpy-use-ipython)
Run Code Online (Sandbox Code Playgroud)
我正在使用的模式(elpy)只是说将这些行添加到我的 .emacs 文件中,一切都会好起来的(我已经在 python 端安装了这个模式)。
加载 emacs--debug-init提供以下内容
(elpy-enable)
eval-buffer(#<buffer *load*> nil "/home/tk12098/.emacs" nil t) ; Reading at buffer position 354
load-with-code-conversion("/home/tk12098/.emacs" "/home/tk12098/.emacs" t t)
load("~/.emacs" t t)
#[0 "\205\262
Run Code Online (Sandbox Code Playgroud)
队伍开始#[0 "....似乎要持续一段时间。
我应该如何解决这个问题?
我需要在随机位置填充一些带有1个的列表.我可以成功创建一个随机数列表:
from random import randint
l = [randint(0,1023) for _ in range(0,10)]
Run Code Online (Sandbox Code Playgroud)
如何在l指定的位置填充1的列表?
我需要规范化列表中的值以产生(累积)概率分布,但是目前我只是将0输出.
这是我正在做的事情:
tests = []
#some code to populate tests which simulates
count = [x[0] for x in tests]
found = [x[1] for x in tests]
found.sort()
num = Counter(found)
freqs = [x for x in num.values()]
cumsum = [sum(item for item in freqs[0:rank+1]) for rank in xrange(len(freqs))]
normcumsum = [float(x/numtests) for x in cumsum]
Run Code Online (Sandbox Code Playgroud)
目前,cumsum和normcumsum是:
cumsum = [1, 2, 6, 12, 28, 39, 64, 85, 96, 98, 99, 100]
normcumsum = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, …Run Code Online (Sandbox Code Playgroud) 我正在实现一个链表(在我的休息时间!),我发现我有这样的结构的函数:
void traverseList(node *head){
if(head != 0){
while(head->next !=0){
cout << head->data << endl;
head = head->next;
}
//one extra for the node at the end
cout << head->data << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道有没有人知道如何消除"一个额外的"电话?
我需要计算我在树上访问的节点数量,同时查找令牌(在本例中为1).到目前为止,我想出了:
def search_recursive(node,rounds=0):
if len(node)==2:
if node[1]==1:
print rounds
else:
rounds += 1
huff_search_recursive(node[1],rounds)
huff_search_recursive(node[2],rounds)
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试将轮数分配给以下任何内容:
def search_recursive(node,rounds=0):
if len(node)==2:
if node[1]==1:
return rounds
else:
rounds += 1
huff_search_recursive(node[1],rounds)
huff_search_recursive(node[2],rounds)
Run Code Online (Sandbox Code Playgroud)
Python为任何变量赋予None.例如.
rounds = search_recursive(node)
Run Code Online (Sandbox Code Playgroud)
节点的一个例子是:
node = (1.0, (0.5, 0), (0.5, (0.25, 0), (0.25, (0.125, 1), (0.125, 0))))
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释是什么导致了这个错误,以及我将来如何测试它?
我正在尝试使用一些自定义转换器来优化scikit-learn管道中的超参数,但我不断遇到错误:
from sklearn.model_selection import TimeSeriesSplit
from sklearn.model_selection import GridSearchCV
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.pipeline import Pipeline
class RollingMeanTransform(BaseEstimator, TransformerMixin):
def __init__(self, col, window=3):
self._window = window
self._col = col
def fit(self, X, y=None):
return self
def transform(self, X):
df = X.copy()
df['{}_rolling_mean'.format(self._col)] = df[self._col].shift(1).rolling(self._window).mean().fillna(0.0)
return df
class TimeEncoding(BaseEstimator, TransformerMixin):
def __init__(self, col, drop_original=True):
self._col = col
self._drop_original = drop_original
def fit(self, X, y=None):
return self
def transform(self, X):
X = X.copy()
unique_vals = float(len(X[self._col].unique()))
X['sin_{}'.format(self._col)] = np.sin(2 * …Run Code Online (Sandbox Code Playgroud) python ×8
asp.net-mvc ×2
c# ×2
c++ ×1
emacs ×1
grid-search ×1
linked-list ×1
numpy ×1
or-tools ×1
paging ×1
pandas ×1
parsing ×1
python-3.x ×1
random ×1
scikit-learn ×1
tree ×1