我需要一个类似列表的对象,只要访问大于或等于其长度的插槽号就会"自动增长",用一些预先指定的默认值填充所有新创建的插槽.例如:
# hypothetical DefaultList class
x = DefaultList(list('abc'), default='*')
x[6] = 'g'
print x[2], x[4], x[6], x[8] # should print 'c * g *'
Run Code Online (Sandbox Code Playgroud)
谢谢!
PS.我知道实现这样的课程并不困难,但我尽可能避免轮胎改造,特别是如果一个特别有效/精心设计的轮子已经存在的话.
PS2.dict(或collections.defaultdict)不是所需数据结构的可接受实现.为什么,请看这里:http://groups.google.com/group/comp.lang.python/msg/bcf360dfe8e868d1?hl = en
标准R表达式outer(X, Y, f)
求值为矩阵,其第(i,j)个条目具有该值f(X[i], Y[j])
.
我想实现这个函数multi.outer
,一个n维泛化outer
:multi.outer(f, X_1, ..., X_n)
,其中f是一些n元函数,会产生一个(长度(X_1)*...*长度(X_n))数组,其中(i_1,... .,i_n)-th entry具有f(X_1[i_1], ..., X_n[i_n])
所有有效索引集(i_1,...,i_n)的值.显然,对于每个i在{1,...,N},的所有元素X_i
中multi.outer(f, X_1,...,X_i,..., X_n)
必须是可允许的第i个参数的函数f
.对于n = 2的情况,multi.outer
会做同样的事情outer
,虽然它会有不同的签名(IOW,multi.outer(f, X, Y)
相当于outer(X, Y, f)
).
重要的是要注意,尽管参数X_1,...,X_n multi.outer
都是向量,但它们不一定都具有相同的模式.例如,X_1和X_2可以分别为c(1, 2, 3)
和LETTERS[10:20]
.
谢谢!
仅仅为了具体,请在名为的文件中考虑以下超简单的Python脚本add_em
:
#!/usr/bin/env python
# script name: add_em
from sys import argv
x = int(argv[1])
y = int(argv[2])
x_plus_y = x + y
print '%d' % x_plus_y
Run Code Online (Sandbox Code Playgroud)
我现在可以运行这个脚本,并从Unix命令行传递参数,如下所示:
% python add_em 3 8
11
Run Code Online (Sandbox Code Playgroud)
如果我使脚本可执行,我甚至不需要python
在命令行上提到:
% chmod +x add_em
% add_em 41 -29
12
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何编写(和运行)MATLAB脚本,使其完全像上面的脚本一样执行吗?特别是,它必须能够从Unix命令行读取其参数(而不是例如MATLAB GUI的"命令行"),并将它们的数字和打印到标准输出.
注意:此脚本不必是"独立"; IOW,可以假设MATLAB是本地安装的,甚至可以
matlab
在命令行中提到(类似于上面的第一种形式,在python
命令行上显式调用解释器).
谢谢!
PS:不用说,这个剧本是"强大"的对立面,但我的目标是产生一个容易传达的例子.
我使用代码创建散点图,实质上就是这样
cmap = (matplotlib.color.LinearSegmentedColormap.
from_list('blueWhiteRed', ['blue', 'white', 'red']))
fig = matplotlib.figure.Figure(figsize=(4, 4), dpi=72)
ax = fig.gca()
for record in data:
level = record.level # a float in [0.0, 1.0]
marker = record.marker # one of 'o', 's', '^', '*', etc.
ax.scatter(record.x, record.y, marker=marker,
c=level, vmin=0, vmax=1, cmap=cmap, **otherkwargs)
# various settings of ticks, labels, etc. omitted
canvas = matplotlib.backends.backend_agg.FigureCanvasAgg(fig)
fig.set_canvas(canvas)
canvas.print_png('/path/to/output/fig.png')
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我需要在上面的代码中添加什么来获得
cmap
沿着图的右边缘的垂直颜色条(表示颜色图)?
注意:我发现Matplotlib 完全不可理解,这既适用于它的设计,也适用于它的文档.(不是因为没有尝试:我花了很多时间,精力,甚至还有一些钱.)所以我会欣赏完整的,有效的代码(即使它只是一个玩具的例子),因为我很可能赢了'能够填写省略的细节或修复代码中的错误.
编辑:我在上面的"代码草图"中修复了一个重要的遗漏,即每次调用时记录特定的标记规范ax.scatter
.这就是创建具有多个调用的散点图的原因ax.scatter
,但是,诚然,人们至少可以减少每个使用的制造商形状分散到一个调用的次数; 例如
for marker in set(record.marker for …
Run Code Online (Sandbox Code Playgroud) 假设这df
是一个pandas
数据帧.我想根据一些标准将其拆分为两个数据帧.我发现这样做的最好方法是
df0, df1 = [v for _, v in df.groupby(df['class'] != 'special')]
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,标准是groupby
方法的参数.结果df0
由class
字段具有值的子数据帧组成'special'
,并且df1
基本上是补充df0
.(不幸的是,使用这种结构,首先返回由不符合标准的项组成的子数据帧,这是不直观的.)
上述构造具有以下缺点:它不是特别可读的,当然不像例如某些假设splitby
方法那样可读
df0, df1 = df.splitby(df['class'] == 'special')
Run Code Online (Sandbox Code Playgroud)
由于分割像这样的数据帧是我经常需要做的事情,因此我认为可能存在内置函数,或者可能是已建立的习惯用法.如果是的话,请告诉我.
我正在寻找一种方法来在窗口调整大小的最后检测mouseup事件(通过拖动完成).(AFAICT,此事件不会被resize
处理程序打开$(window)
或打开$(document)
.)
PS:为了我的目的,可以定义一个"拖动调整大小",作为在mousedown(在窗口上合适的调整大小的轨迹上)和相应的mouseup事件之间发生的大小调整,忽略用户可能做出的任何暂停,同时仍然按住鼠标按钮,在这两个端点之间.
下面的函数是一个自行开发的hack,用于检测其参数是否引用脚本
function yesno = is_script(string_or_handle)
try
nargin(string_or_handle);
yesno = false;
catch me
if ~strcmp(me.identifier, 'MATLAB:nargin:isScript')
rethrow(me);
end
yesno = true;
end
end
Run Code Online (Sandbox Code Playgroud)
这种黑客很难维护.(例如,每当MathWorks决定更改将nargin
脚本作为输入时抛出的异常标识符类时,这将会中断.)
MATLAB是否已经有内置函数来执行此操作?
如何在R中实现函数apply.func(func, arg.list)
,该函数接受任意函数func
和合适的列表arg.list
作为参数,并返回func
使用包含的参数调用的结果arg.list
.例如
apply.func(foo, list(x="A", y=1, z=TRUE))
Run Code Online (Sandbox Code Playgroud)
相当于
foo(x="A", y=1, z=TRUE)
Run Code Online (Sandbox Code Playgroud)
谢谢!
PS FWIW,Python的等价的apply.func
会是这样的
def apply_func(func, arg_list):
return func(*arg_list)
Run Code Online (Sandbox Code Playgroud)
要么
def apply_func(func, kwarg_dict):
return func(**kwarg_dict)
Run Code Online (Sandbox Code Playgroud)
或其某些变体.
在哪里可以找到安装ipython qtconsole
Windows 7(64位)所需模块的分步说明?
(对不起这个问题的简洁.我需要几个小时的时间来记下我尝试的所有事情,并且几乎和任何人一样阅读它.我只会注意到我发现的所有内容甚至是远程相关的.到pyqt4似乎非常特定于Unix,最多只是粗略地点头看看Windows用户可能会尝试...)
这加载没有错误:
data Const c a = Const c
instance Functor (Const c) where
fmap _ (Const v) = Const v
Run Code Online (Sandbox Code Playgroud)
...但是这个
data Const' c a = Const' c
instance Functor (Const' c) where
fmap _ cv = cv
Run Code Online (Sandbox Code Playgroud)
......失败了:
Couldn't match type `a' with `b'
`a' is a rigid type variable bound by
the type signature for fmap :: (a -> b) -> Const' c a -> Const' c b
at test.hs:4:5
`b' is a rigid type variable bound by …
Run Code Online (Sandbox Code Playgroud) matlab ×2
python ×2
r ×2
command-line ×1
events ×1
haskell ×1
ipython ×1
javascript ×1
jquery ×1
list ×1
matplotlib ×1
mouseevent ×1
outer-join ×1
pandas ×1
reduce ×1
resize ×1