我正在寻找如何重新采样以新尺寸表示图像数据的numpy数组,最好选择插值方法(最近,双线性等).我知道有
scipy.misc.imresize
Run Code Online (Sandbox Code Playgroud)
这通过包装PIL的调整大小功能来完成这一点.唯一的问题是,因为它使用PIL,numpy数组必须符合图像格式,给我最多4个"颜色"通道.
我希望能够使用任意数量的"颜色"通道调整任意图像的大小.我想知道是否有一种简单的方法可以在scipy/numpy中执行此操作,或者如果我需要自己滚动.
关于如何自己编造一个我有两个想法:
scipy.misc.imresize分别在每个通道上运行的函数scipy.ndimage.interpolation.affine_transform对于大数据,第一个可能会很慢,而第二个似乎不提供除样条之外的任何其他插值方法.
我刚刚开始一个新的Python项目,理想情况下我想从一开始就提供Python 2和3支持,只需要很少的开发开销.我的问题是,为全新项目做这件事的最佳方法是什么?
作为安装脚本的一部分,我遇到了运行2to3甚至3to2的项目.这似乎是一种非常常见的方式.但是,似乎有几种不同的方法可以做到这一点.我也遇到了Distribute.
还可以选择编写多语言Python 2/Python 3代码.即使这看起来像一个可怕的想法,我注意到我最近编写的代码更像是Python 3代码,尽管我仍然以Python 2运行它.我有一种感觉这只会帮助我自己的过渡时这一天终于到来了,并没有为提供或至少帮助双重支持做多少.
我提供的大多数提供双重支持的项目都是后期添加了Python 3的支持,所以我特别好奇是否有更好的方法更适合新项目,你可以从中获得清晰的好处.
谢谢!
我想在Python中进行分层键值存储,这基本上归结为将字典存储到文件中.我指的是任何类型的字典结构,可能包含其他字典,numpy数组,可序列化的Python对象等等.不仅如此,我希望它存储空间优化的numpy数组,并在Python 2和3之间发挥很好的作用.
以下是我所知道的方法.我的问题是这个清单中缺少什么,是否有一个替代方案可以躲过我所有的交易破坏者?
pickle模块(交易破坏者:大量膨胀numpy数组的大小)save/ savez/ load(致命弱点:不同的Python 2/3格式不兼容)PyTables的替代numpy.savez是有希望的,因为我喜欢使用hdf5的想法,它真的有效地压缩numpy数组,这是一个很大的优点.但是,它不需要任何类型的字典结构.
最近,我一直在做的是使用类似于PyTables替换的东西,但增强它以便能够存储任何类型的条目.这实际上工作得很好,但我发现自己在长度为1的CArrays中存储原始数据类型,这有点尴尬(并且对于实际的长度为1的数组来说是模棱两可的),即使我设置chunksize为1因此它不会占用很多空间.
那里有类似的东西吗?
谢谢!
我目前正在编写一个包含大型数组的程序,我对不同数组的处理时间感到非常困惑.一方面,我有7个"较小"的数组(<= 65536个元素),另一方面,我有7个大数组(65536 <elements <= 67108864).两者都是整数数组.我只想在循环中增加各种元素.每个循环我都会在每个数组的相同索引处增加元素.这意味着每个循环我想在同一索引处增加所有14个数组.这需要21秒.如果我只增加7个较小的数组,它只需要2秒,如果我只增加7个较大的数组,则需要18秒!为了更好的说明,我编写了一个示例代码:
#include <iostream>
#include <time.h>
using namespace std;
int main(int argc,char* argv[])
{
int i;
int* ExampleArray1 = new int [16384]; // 3 "small" arrays (2^14)
int* ExampleArray2 = new int [32768]; // (2^15)
int* ExampleArray3 = new int [65536]; // (2^16)
for(i=0 ; i<16384 ; i++) {ExampleArray1[i] = 0;}
for(i=0 ; i<32768 ; i++) {ExampleArray2[i] = 0;}
for(i=0 ; i<65536 ; i++) {ExampleArray3[i] = 0;}
int* ExampleArray4 = new int [16777216]; // 3 large …Run Code Online (Sandbox Code Playgroud) 我正在尝试将文档测试添加到我正在导出的Rust宏中.像这样的东西:
/// Usage:
///
/// ```
/// let x = addone!(100);
/// ```
#[macro_export]
macro_rules! addone {
($x:expr) => ($x + 1)
}
Run Code Online (Sandbox Code Playgroud)
如果我cargo test继续这样做,我明白了
failures:
---- src/lib.rs - addone (line 3) stdout ----
error: cannot find macro `addone!` in this scope
--> src/lib.rs:2:9
|
2 | let x = addone!(100);
| ^^^^^^
Run Code Online (Sandbox Code Playgroud)
我想不出macro_use在doc测试中添加的合法方式,所以没有运气.
我有一个NSButton子类,我想用鼠标右键单击来完成工作.只是重载-rightMouseDown:不会削减它,因为我想要与常规点击相同的行为(例如按下按钮,用户可以通过离开按钮取消,在释放鼠标时发送动作等. ).
到目前为止我尝试过的是重载-rightMouse{Down,Up,Dragged},更改事件以指示鼠标左键单击然后将其发送到-mouse{Down,Up,Dragged}.现在这显然是一个hack充其量,因为事实证明Mac OS X并不喜欢这一切.我可以单击按钮,但在释放时,按钮仍然被按下.
我自己可以模仿这种行为,这不应该太复杂.但是,我不知道如何按下按钮.
在你说"不要!这是一个非常规的Mac OS X行为并应该避免"之前:我已经考虑过这一点,右键点击可以极大地改善工作流程.基本上按钮循环通过4个状态,我想要右键单击以使其反向循环.这不是一个必不可少的功能,但它会很好.如果你仍然想说"不要!",那就让我知道你的想法吧.我很感激!
谢谢!
编辑:这是我尝试更改事件(你不能改变类型,所以我做了一个新的,复制所有信息.我的意思是,我知道这是框架明确告诉我不要这样做,但我像你一样去试了一下):
// I've contracted all three for brevity
- (void)rightMouse{Down,Up,Dragging}:(NSEvent *)theEvent {
NSEvent *event = [NSEvent mouseEventWithType:NSLeftMouse{Down,Up,Dragging} location:[theEvent locationInWindow] modifierFlags:[theEvent modifierFlags] timestamp:[theEvent timestamp] windowNumber:[theEvent windowNumber] context:[theEvent context] eventNumber:[theEvent eventNumber] clickCount:[theEvent clickCount] pressure:[theEvent pressure]];
[self mouse{Down,Up,Dragging}:event];
}
Run Code Online (Sandbox Code Playgroud)
更新:我注意到它-mouseUp:从未被发送到NSButton,如果我将其更改为NSControl,它就是.我不知道为什么会这样,直到Francis McGrew指出它包含自己的事件处理循环.现在,这也解释了为什么在我重新路由之前-rightMouseDown:,但按钮不会在发布时上升.这是因为它本身正在获取新事件,我无法拦截并从右向左转换为鼠标按钮事件.
我一直在浏览Sketch,他们随Xcode一起提供的示例程序,我一直看到这样的事情(并不总是如此):
[[MyClass class] classMethod]
Run Code Online (Sandbox Code Playgroud)
现在,既然MyClass不是该类的实例,我会这样做:
[MyClass classMethod]
Run Code Online (Sandbox Code Playgroud)
作为一个实验,我能够通过覆盖+ (Class)class和返回另一个类来区分上述两个语句!如果你想要这样做,你需要以前的版本才能使用它,所以我可以看到它可能有用,但是真的吗?
这听起来像是一个可怕的想法篡改+class,但如果有的话请赐教.谢谢!
要看到一些例子,检查出的方法-copy:中SKTGraphicsView.m,在发现草图程序Developer/Examples/Sketch/.
这是我有内存泄漏的代码:
SCNetworkReachabilityRef reach = SCNetworkReachabilityCreateWithName(kCFAllocatorSy stemDefault, "google.com");
SCNetworkConnectionFlags flags;
SCNetworkReachabilityGetFlags(reach, &flags);
[flags release];
[reach release];
Run Code Online (Sandbox Code Playgroud)
那些发布不会这样做.
假设我有这个代码(它是人为的,因为它大大简化了):
enum Foo<'a, T> where T: 'a {
Bar(&'a mut Vec<T>),
}
fn main() {
let mut v = vec![1, 2];
let foo: Foo<isize> = Foo::Bar(&mut v);
let a = match foo {
Foo::Bar(ref mut v) => &mut v[..],
};
a[1] = 10;
println!("a = {:?}", a);
}
Run Code Online (Sandbox Code Playgroud)
这很有效,每个人都很开心.但是,如果我尝试通过将match语句放在函数中来清理它,我甚至无法编译函数,更不用说让它为我工作了.我的许多尝试之一看起来像这样:
fn unpack<'a, T>(foo: Foo<'a, T>) -> &'a mut [T] {
match foo {
Foo::Bar(ref mut v) => &mut v[..],
}
}
Run Code Online (Sandbox Code Playgroud)
我刚收到错误:
error: `foo.0` does not live long enough
Run Code Online (Sandbox Code Playgroud)
我一直试图改变多个生命周期并添加一个where …
我的图像位于大锚的顶部.圆形图像在视觉上看起来是正确的,但是图像仍然在DOM上充当正方形并且限制访问下面的锚.
我怎样才能使圆角图像没有方形可选区域?
这是一个显示问题的JS小提琴.https://jsfiddle.net/jp81fp3u/1/ 整个蓝色方块是一个锚点,但请注意,即使图像是圆形的,它仍然有方形角落阻挡锚点.如果光标要靠近图像,则锚点不会进入悬停状态.
来自JSFiddle的代码:
#wrapper {
position: relative;
width: 500px;
height: 500px;
}
.outer {
background-color: blue;
height: 250px;
width: 250px;
z-index: 8;
}
.outer a {
display: block;
width: 100%;
height: 100%;
z-index: 9;
}
.outer a:hover {
background-color: green;
}
.circle {
display: block;
background: red;
width: 170px;
height: 170px;
border-radius: 50%;
position: absolute;
top: 25px;
left: 25px;
z-index: 11;
}Run Code Online (Sandbox Code Playgroud)
<div id="wrapper">
<div class="outer">
<a href="#">
anchor
</a>
</div>
<img src="http://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg" alt="" class="circle" />
</div>Run Code Online (Sandbox Code Playgroud)
python ×3
numpy ×2
objective-c ×2
python-3.x ×2
rust ×2
arrays ×1
assembly ×1
c++ ×1
cocoa ×1
cocoa-touch ×1
css ×1
css3 ×1
disassembly ×1
hdf5 ×1
html ×1
image ×1
iphone ×1
nsbutton ×1
pytables ×1
python-2to3 ×1
scipy ×1