我一直在阅读Sedgewick和Wayne的"Algorithms,4th Ed",并且我一直在实现JavaScript中讨论的算法.
我最近采用了书中提供的mergesort示例来比较自上而下和自下而上的方法......但我发现自下而上的运行速度更快(我认为).在我的博客上查看我的分析.- http://www.akawebdesign.com/2012/04/13/javascript-mergesort-top-down-vs-bottom-up/
我还没有找到任何讨论说一个mergesort方法应该比另一个快.我的实施(或分析)是否存在缺陷?
注意:我的分析测量算法的迭代循环,而不是严格的数组比较/移动.也许这有缺陷或无关紧要?
编辑:我的分析实际上没有时间速度,所以我关于它运行"更快"的声明有点误导.我通过递归方法(自上而下)和for循环(自下而上)跟踪"迭代" - 并且自下而上似乎使用更少的迭代.
我有一个值列表,我想将列表中任何元素的最大值设置为255,将最小值设置为0,同时保持范围内的元素不变.
oldList = [266, 40, -15, 13]
newList = [255, 40, 0, 13]
Run Code Online (Sandbox Code Playgroud)
目前我在做
for i in range(len(oldList)):
if oldList[i] > 255:
oldList[i] = 255
if oldList[i] < 0:
oldList[i] = 0
Run Code Online (Sandbox Code Playgroud)
或类似的newList.append(oldList[i])
.
但必须有比这更好的方法,对吗?
我g
在python-igraph中有一个图形.我可以通过VertexCluster
以下方式获得社区结构:
community = g.community_multilevel()
Run Code Online (Sandbox Code Playgroud)
community.membership
给我一个图表中所有顶点的组成员资格列表.
我的问题非常简单,但我还没有找到特定于python的答案.如何使用其社区结构的可视化绘制图形?最好是PDF,所以像
layout = g.layout("kk")
plot(g, "graph.pdf", layout=layout) # Community detection?
Run Code Online (Sandbox Code Playgroud)
非常感谢.
Rust的新手,为我的天真道歉.
我想定义一些概率分布,它们显然具有不同的参数.但是"界面"(我在Java中所知)应该是相同的.在最基本的层面上,每个分布都应该有sample
一个sample_many
方法.所以我实现了一个特征:
pub trait ERP<T> {
fn sample(&self) -> T;
fn sample_many(&self, i: isize) -> Vec<T>;
}
Run Code Online (Sandbox Code Playgroud)
然后可以创建特定的分布:
pub struct Bernoulli {
pub p: f64
}
impl ERP<bool> for Bernoulli {
fn sample(&self) -> bool {
rand::random::<f64>() < self.p
}
fn sample_many(&self, i: isize) -> Vec<bool> {
(0..i).map(|_| self.sample()).collect()
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是sample_many
具体的方法.无论分布的类型如何,该方法都是相同的代码
pub struct Gaussian {
pub mu: f64,
pub sigma: f64
}
impl ERP<f64> for Gaussian {
fn sample(&self) -> f64 {
// …
Run Code Online (Sandbox Code Playgroud) 我有一个单键词典列表.例如:
lst = [
{'1': 'A'},
{'2': 'B'},
{'3': 'C'}
]
Run Code Online (Sandbox Code Playgroud)
我想简单地将其转换为普通字典:
dictionary = {
'1': 'A',
'2': 'B',
'3': 'C'
}
Run Code Online (Sandbox Code Playgroud)
什么是最简洁/有效的方法?
我对传感器数据非常着迷.我使用我的iPhone和一个名为SensorLog的应用程序捕获加速度计数据,同时我站立并推动我的双腿跳跃.
我的目标是使用R创建一个模型,该模型可以识别跳跃以及我在空中的时间.我不确定如何进行这样的挑战.我有加速计数据的时间序列.
https://drive.google.com/file/d/0ByWxsCBUWbqRcGlLVTVnTnZIVVk/view?usp=sharing
一些问题:
下面是用于创建上图的R代码,这是我站立并进行简单的跳转.
谢谢!
# Training set
sample <- read.csv("sample-data.csv")
# Sum gravity
sample$total_gravity <- sqrt(sample$accelerometerAccelerationX^2+sample$accelerometerAccelerationY^2+sample$accelerometerAccelerationZ^2)
# Smooth our total gravity to remove noise
f <- rep(1/4,4)
sample$total_gravity_smooth <- filter(sample$total_gravity, f, sides=2)
# Removes rows with NA from smoothing
sample<-sample[!is.na(sample$total_gravity_smooth),]
#sample$test<-rollmaxr(sample$total_gravity_smooth, 10, fill = NA, align = "right")
# Plot gravity
plot(sample$total_gravity, type="l", col=grey(.2), xlab="Series", ylab="Gravity", main="Accelerometer Gravitational Force")
lines(sample$total_gravity_smooth, col="red")
stdevs <- mean(sample$total_gravity_smooth)+c(-2,-1,+1,+2)*sd(sample$total_gravity_smooth)
abline(h=stdevs)
Run Code Online (Sandbox Code Playgroud) 我有一个带有布尔值的pandas数据帧,即
col1 col2
1 True False
2 False True
3 True True
Run Code Online (Sandbox Code Playgroud)
当我使用pandas的DataFrame.to_csv
方法时,结果数据框看起来像
,col1,col2
1,True,False
2,False,True
3,True,True
Run Code Online (Sandbox Code Playgroud)
有没有办法将布尔变量写为1和0(更节省空间),即
,col1,col2
1,1,0
2,0,1
3,1,1
Run Code Online (Sandbox Code Playgroud)
无需先抛出整个数据帧?
cons(::
)运算符是1)在OCaml和类似语言中编写递归列表函数,以及2)列表上的模式匹配的基本部分.但是,我在Reason的有关cons的文档中找不到任何内容,在REPL中,这会引发错误:
Reason # let myList = [2, 3, 4];
let myList : list int = [2, 3, 4]
Reason # 1 :: myList;
Error: Syntax error
Run Code Online (Sandbox Code Playgroud)
是否有替代cons运营商?
我有一个二进制numpy二维数组,比方说,
import numpy as np
arr = np.array([
# Col 0 Col 1 Col 2
[False, False, True], # Row 0
[True, False, False], # Row 1
[True, True, False], # Row 2
])
Run Code Online (Sandbox Code Playgroud)
我想要True
矩阵中每个元素的行和列:
[(0, 2), (1, 0), (2, 0), (2, 1)]
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过迭代来做到这一点:
links = []
nrows, ncols = arr.shape
for i in xrange(nrows):
for j in xrange(ncols):
if arr[i, j]:
links.append((i, j))
Run Code Online (Sandbox Code Playgroud)
是否有更快或更直观的方式?
为什么我不能拥有一个argparse
与title
or 相互排斥的组description
,以便它在--help
消息下显示为一个单独的类别?
我有一个名称和描述的选项组:
import argparse
parser = argparse.ArgumentParser()
group = parser.add_argument_group(
'foo options', 'various (mutually exclusive) ways to do foo')
group.add_argument('--option_a', action='store_true', help='option a')
group.add_argument('--option_b', action='store_true', help='option b')
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
产量--help
:
usage: foo.py [-h] [--option_a] [--option_b]
optional arguments:
-h, --help show this help message and exit
foo options:
various (mutually exclusive) ways to do foo
--option_a option a
--option_b option b
Run Code Online (Sandbox Code Playgroud)
但我想让小组互相排斥:
import argparse
parser = argparse.ArgumentParser()
group = …
Run Code Online (Sandbox Code Playgroud)