我有一个尺寸为(100*100)的标签矩阵,存储为numpy数组,我想用pyglet显示矩阵.
我最初的想法是使用这个矩阵使用函数pyglet.image.ImageData()形成一个新的pyglet图像.它需要imagedata的缓冲区作为输入,但是我不知道如何从numpy数组中获得正确的格式化缓冲区.
任何人都有任何想法?
PS.我目前的解决方案
3d_label = numpy.empty([100,100,3])
3d_label[:,:,0] = label * 255 # value range of label is [0,1]
3d_label[:,:,1] = label * 255
3d_label[:,:,2] = label * 255
image_data = ctypes.string_at(id(3d_label.tostring())+20, 100*100*3)
image = pyglet.image.ImageData(100, 100, 'RGB', image_data, -100*3)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法从3 [100*100]矩阵构造一个[100*100*3]矩阵与numpy?
好的,我很清楚如何使用函数和宏.
我很好奇的是为什么编译器在集成两者时不能更聪明一些,例如考虑Clojure代码:
(defmacro wonky-add [a b] `(+ ~a (* 2 ~b)))
(defn wonky-increment [a] (apply wonky-add a 1))
=> Error: can't take value of a macro
Run Code Online (Sandbox Code Playgroud)
是的,我知道我可以通过取出"apply"来完成这项工作 - 但为什么编译器无法弄清楚如何自己做这个呢?
在Clojure /其他LISP中是否可以创建一个apply或其他更高阶函数的版本,这些函数同时兼容函数和宏作为参数?
lisp compiler-construction macros functional-programming clojure
可能重复:
你今天如何使用C++ 0x?
我正在与一个相当新系统的团队合作.我们正在谈论迁移到MSVC 2010,我们已经迁移到GCC 4.5.这些是我们使用的唯一编译器,我们没有计划很快将代码移植到不同的编译器.
我建议在我们这样做之后,我们开始利用已经提供的一些C++ 0x功能,比如auto.我的同事暗示反对这一点,建议等待"直到C++ 0x实际上成为标准." 我不同意,但我可以用他的措辞来看待它的吸引力.尽管如此,我还是忍不住认为这种反驳更多的是出于对学习C++ 0x的恐惧和恐惧,而不是对标准化的真正关注.
鉴于系统的新状态,我希望我们能够利用现有的新技术.例如,auto就会让我们的日常生活更轻松(只需编写基于迭代器的循环,直到基于范围的循环出现,例如).
我觉得这个错了吗?我并不是在提议我们从根本上改变我们萌芽的代码库,而只是在方便的时候开始使用C++ 0x功能.我们知道我们正在使用哪些编译器并且没有立即移植的计划(如果我们曾经移植过代码库,那么当然编译器也可以使用C++ 0x功能以及目标平台).除此之外,我似乎在1997年避免使用iostreams,因为尽管所有编译器都已经以便携方式提供它们,但ISO C++标准尚未发布.
如果你们都同意,你能否提供我可以用来巩固我的立场的论据?如果没有,我可以获得更多关于"直到C++ 0x是标准"的想法吗?顺便说一句,有人知道什么时候会这样吗?
我有一个输入类型总是变化的页面,我需要根据输入类型获取值.因此,如果类型是收音机,我需要检查哪个,如果它是我现在需要检查的复选框,如果是下拉菜单,我需要知道哪个被选中,如果它是text/textarea我需要知道这些值.
有关如何做到这一点的任何想法?
当我尝试在Chrome 5.0.375.86中设置HTML5 Video元素的currentTime时:
video.currentTime = 1.0;
Run Code Online (Sandbox Code Playgroud)
我收到以下javascript异常:
Uncaught Error: INDEX_SIZE_ERR: DOM Exception 1
Run Code Online (Sandbox Code Playgroud)
它在Safari中运行良好.有没有人经历过这个?
根据文档mod.const_get(sym)"返回mod中命名常量的值".
我也知道const_get默认情况下可以查找接收器的继承链.以下是有效的:
class A; HELLO = :hello; end
class B < A; end
B.const_get(:HELLO) #=> :hello
Run Code Online (Sandbox Code Playgroud)
我也知道Ruby子类中的类Object,因此const_get即使接收器是普通类,您也可以使用查找"全局"常量:
class C; end
C.const_get(:Array) #=> Array
Run Code Online (Sandbox Code Playgroud)
然而,这是我困惑的地方 - 模块不是子类Object.那么为什么我仍然可以使用模块查找"全局"常量const_get?为什么以下工作?
module M; end
M.const_get(:Array) #=> Array
Run Code Online (Sandbox Code Playgroud)
如果文档是正确的 - const_get只需查找接收器或其超类下定义的常量.但是在上面的代码中,Object不是超类M,为什么有可能查找Array?
谢谢
我一直使用内置的IDE,但是自从Flash MX中的ActionScript 2.0以来我已经离开了Flash ...我回到了Flash,我注意到有很多IDE(其中一些成本更高)比Flash升级).那么......对于Flash/Actionscript 3开发人员的问题 - 哪个IDE可以使用,如果有的话?
我一直在阅读并做一些测试,发现了这个命令.当数组的键是字符串时,Array()javascript的"长度"不起作用.我发现要运行此命令,我使用整个键.
但是,我想知道你们中有谁能告诉我为什么这条规则?语言的限制,还是逻辑的规范?或者,我的错误......?
谢谢
Obs.:我的数组的关键是一个字符串(组件名称),但是值和对象数组.
Declarating:
objElementos = new Array();
Run Code Online (Sandbox Code Playgroud)
宾语:
objElemento = function(Id){
this.Id = $('#' + Id).attr('id');
this.Name = $('#' + Id).attr('name');
this.CssLeft = $('#' + Id).css('left');
this.CssBottom = $('#' + Id).css('bottom');
this.Parent = $('#' + Id).parent().get(0);
this.Childs = new Array();
this.addChild = function(IdObjChild) {
try {
if ($('#' + IdObjChild).attr('id') != '')
this.Childs[$('#' + IdObjChild).attr('id')] = new objElemento(IdObjChild);
} catch(err){ $('#divErrors').prepend('<p>' + err + '</p>'); }
}
this.getChildCount = function(){
try {
$('#divErrors').prepend('<p>' + this.Childs.length + '</p>');
return …Run Code Online (Sandbox Code Playgroud)