我正在尝试加速我的Numpy代码,并决定我想实现一个特定的函数,我的代码大部分时间都在C中.
我实际上是C中的新手,但我设法编写了一个函数,它将矩阵中的每一行规范化为1.我可以编译它并用一些数据(在C中)测试它并且它做我想要的.那时我为自己感到骄傲.
现在我试图从Python中调用我的光荣函数,它应该接受一个2d-Numpy数组.
我尝试过的各种事情都是
痛饮
SWIG + numpy.i
ctypes的
我的功能有原型
void normalize_logspace_matrix(size_t nrow, size_t ncol, double mat[nrow][ncol]);
Run Code Online (Sandbox Code Playgroud)
因此它需要一个指向可变长度数组的指针并将其修改到位.
我尝试了以下纯SWIG接口文件:
%module c_utils
%{
extern void normalize_logspace_matrix(size_t, size_t, double mat[*][*]);
%}
extern void normalize_logspace_matrix(size_t, size_t, double** mat);
Run Code Online (Sandbox Code Playgroud)
然后我会做(在Mac OS X 64bit上):
> swig -python c-utils.i
> gcc -fPIC c-utils_wrap.c -o c-utils_wrap.o \
-I/Library/Frameworks/Python.framework/Versions/6.2/include/python2.6/ \
-L/Library/Frameworks/Python.framework/Versions/6.2/lib/python2.6/ -c
c-utils_wrap.c: In function ‘_wrap_normalize_logspace_matrix’:
c-utils_wrap.c:2867: warning: passing argument 3 of ‘normalize_logspace_matrix’ from incompatible pointer type
> g++ -dynamiclib c-utils.o -o _c_utils.so
Run Code Online (Sandbox Code Playgroud)
在Python中,我在导入模块时遇到以下错误:
>>> import c_utils
Traceback …Run Code Online (Sandbox Code Playgroud) 我在Rails 3应用程序中使用Haml,它的新行让我疯了!例如,
%span
foo
Run Code Online (Sandbox Code Playgroud)
呈现为
<span>
foo
</span>
Run Code Online (Sandbox Code Playgroud)
但我更愿意
<span>foo</foo>
Run Code Online (Sandbox Code Playgroud)
原因(除了更清晰的XML)是额外的换行是我的Selenium测试的一个问题,因为它们搞乱了做XPath查询的能力"//span[.='foo']".所以我不得不写'\nfoo\n'(ew!),或者使用//span[contains(text(), 'foo')],它们的匹配范围太广了.
我知道我可以使用鳄鱼操作符("<"和">")去除空格,但由于我没有希望新行出现在输出中的情况,我最后会添加它们机械地在每条线的末端.而这似乎非常不明智.
所以现在我看到两个解决方案:
nuke_inner_whitespace/ nuke_outer_whitespace变量可能会起作用,但我不确定如何在不诉诸无偿的猴子修补的情况下改变它们.gsub!("\n", "")所有呈现的HTML.(对于textarea和pre,我仍然可以使用~ "foo\nbar"Haml发射foo
bar.)但是哪里是正确的地方挂钩Rails?我在代码中有点迷失.任何指针或其他建议赞赏!
更新:我已经在下面使用了Jason的猴子补丁一段时间了,我开始认为它不值得.例如,如果我想获得<span>[del]</span> <span>foo</span>,很难在核心之间没有空白区域.即使以下内容也会[del]foo在页面上呈现:
%span
= '[del] '
%span
foo
Run Code Online (Sandbox Code Playgroud)
所以我想我会回去手动添加鳄鱼操作员(参见下面的自我回答).活到老,学到老.
再次感谢杰森!:)
有没有关于如何最好地在任何地方构建Android应用程序的好例子或教程?
我是java和android的新手,我在asp.net中使用模型视图演示器和模型视图控制器的被动和监督控制器变体构建了winforms应用程序,但没有真正看到任何使用这些模式的android上的示例或代码.
人们如何在野外构建体面大小的Android应用程序.有没有最好的做法,或者我应该严格坚持官方的Android文档.
我在Rails中有一串HTML.我想在一定数量的字符之后截断字符串,不包括HTML标记.此外,如果拆分恰好落在开始和结束标签的中间,我想关闭打开的标签.例如;
html = "123<a href='#'>456</a>7890"
truncate_markup(html, :length => 5) --> "123<a href='#'>45</a>"
Run Code Online (Sandbox Code Playgroud) 我不了解开始标记的属性和属性的HTML5规范langxml:lang<html>.滚动了一下,据我所知,xmlns是一个"护身符"(没有效果),但对于lang和xml:lang?他们应该被使用吗?如果是这样,他们应该设置什么?
所以我现在已经在Processing工作了几个星期,虽然我没有编程方面的经验,但我已经转向了更复杂的项目.我正在编程一个进化模拟器,它会生成具有随机属性的生物.
最终,我将添加复制品,但截至目前,这些生物只是漂浮在屏幕周围,并且稍微跟着鼠标.它与来自线路的声音相互作用,但我对这些部分进行了评论,以便可以在画布上查看,它不应该真正改变问题,我只是想我会指出它.
截至目前,帧速率对我来说远非理想,随着更多生物的产生,它逐渐降低.我是否犯了一些基本错误,或者我只是每帧运行太多功能?
这里的源代码,你可以在浏览器中玩它在这里:
//import ddf.minim.*;
//import ddf.minim.signals.*;
//import ddf.minim.analysis.*;
//import ddf.minim.effects.*;
//Minim minim;
//AudioInput in;
boolean newCreature = true;
boolean matured[];
int ellipses[];
int hair[];
int maxCreatureNumber = 75;
//int volume;
//int volumeTolerance = 1;
int creatureIndex = -1;
int creatureX[];
int creatureY[];
float strokeWeightAttribute[];
float creatureSize[];
float creatureEndSize[];
float creatureXIncrement[];
float creatureYIncrement[];
float bubbleSize;
float easing = 0.05;
float angle = 0.00;
color colorAttribute[];
void setup() {
background(0);
size(1000,500);
noFill();
//minim = new Minim(this); …Run Code Online (Sandbox Code Playgroud) 我最近一直在学习Lisp(Scheme,Racket和Clojure到不同程度),并阅读了着名的Playstation开发者Naughty Dog的相应文献.
这篇Gamasutra文章提到他们的流媒体引擎实际上除了游戏数据之外还包含游戏代码.现在,他们有一种叫做GOAL的Lisp方言,他们广泛使用.我知道Lisp的"Code as Data",尽管我还没有完全理解这个概念.所以,我想知道流代码的能力是否是他们的代码的属性是Lisp数据或编译的机器代码,而不是可以在许多语言中使用的通用设计模式?
有人能指点我这个主题的文学作品吗?
这似乎是一个非常简单的,但我尝试的一切似乎都不起作用
说我有以下字符串:
string myString = "http://www.mysite.com/folder/file.jpg";
Run Code Online (Sandbox Code Playgroud)
如何处理删除URL并将"file.jpg"作为字符串值?
谢谢!
短剑的一种
使用VMWare Workstation Easy Install,您可以在没有任何输入的情况下安装操作系统.它是如何做到的?是否支持将此内置到操作系统中,或者vmware是否会自动选择正确的选项?
我有2个设备,我想在它们之间建立一个安全的通信通道.唯一的共享秘密是(7到20个字符的ASCII)密码.如果我使用PBKDF2(来自RFC 2898)使用公共盐,迭代和密码来生成双方的AES256-CBC密钥和IV,我想我可以一步验证用户并提供加密通道.是真的,还是有一些原因我只看到人们使用PBKDF2来验证密码?
我的理由是,双方都需要知道密码才能生成相同的密钥和IV.因此,如果设备B可以解密来自设备A的数据,他们都证明他们具有相同的密码短语.