小编Gus*_*son的帖子

重新采样表示图像的numpy数组

我正在寻找如何重新采样以新尺寸表示图像数据的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 numpy image-processing scipy python-imaging-library

70
推荐指数
4
解决办法
8万
查看次数

Python 2和Python 3双重开发

我刚刚开始一个新的Python项目,理想情况下我想从一开始就提供Python 2和3支持,只需要很少的开发开销.我的问题是,为全新项目做这件事的最佳方法是什么?

作为安装脚本的一部分,我遇到了运行2to3甚至3to2的项目.这似乎是一种非常常见的方式.但是,似乎有几种不同的方法可以做到这一点.我也遇到了Distribute.

还可以选择编写多语言Python 2/Python 3代码.即使这看起来像一个可怕的想法,我注意到我最近编写的代码更像是Python 3代码,尽管我仍然以Python 2运行它.我有一种感觉这只会帮助我自己的过渡时这一天终于到来了,并没有为提供或至少帮助双重支持做多少.

我提供的大多数提供双重支持的项目都是后期添加了Python 3的支持,所以我特别好奇是否有更好的方法更适合新项目,你可以从中获得清晰的好处.

谢谢!

python python-2to3 python-3.x

29
推荐指数
4
解决办法
3442
查看次数

将字典保存到文件(numpy和Python 2/3友好)

我想在Python中进行分层键值存储,这基本上归结为将字典存储到文件中.我指的是任何类型的字典结构,可能包含其他字典,numpy数组,可序列化的Python对象等等.不仅如此,我希望它存储空间优化的numpy数组,并在Python 2和3之间发挥很好的作用.

以下是我所知道的方法.我的问题是这个清单中缺少什么,是否有一个替代方案可以躲过我所有的交易破坏者?

  • Python的pickle模块(交易破坏者:大量膨胀numpy数组的大小)
  • NumPy的的save/ savez/ load(致命弱点:不同的Python 2/3格式不兼容)
  • 替换numpy.savez的PyTables(交易破坏者:只处理numpy数组)
  • 手动使用PyTables(交易破坏者:我希望这可以不断更改研究代码,因此通过调用单个函数将字典转储到文件非常方便)

PyTables的替代numpy.savez是有希望的,因为我喜欢使用hdf5的想法,它真的有效地压缩numpy数组,这是一个很大的优点.但是,它不需要任何类型的字典结构.

最近,我一直在做的是使用类似于PyTables替换的东西,但增强它以便能够存储任何类型的条目.这实际上工作得很好,但我发现自己在长度为1的CArrays中存储原始数据类型,这有点尴尬(并且对于实际的长度为1的数组来说是模棱两可的),即使我设置chunksize为1因此它不会占用很多空间.

那里有类似的东西吗?

谢谢!

python numpy hdf5 pytables python-3.x

13
推荐指数
1
解决办法
5004
查看次数

使用大型数组索引增加访问时间

问题

我目前正在编写一个包含大型数组的程序,我对不同数组的处理时间感到非常困惑.一方面,我有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)

c++ arrays assembly disassembly visual-studio-2012

13
推荐指数
1
解决办法
628
查看次数

在宏自己的doc测试中"找不到宏"错误

我正在尝试将文档测试添加到我正在导出的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测试中添加的合法方式,所以没有运气.

Rust标准库中遵循与上面代码相​​同的格式,因此我希望它能够正常工作.

rust

11
推荐指数
1
解决办法
2272
查看次数

响应右键单击的NSButton子类

我有一个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:,但按钮不会在发布时上升.这是因为它本身正在获取新事件,我无法拦截并从右向左转换为鼠标按钮事件.

cocoa nsbutton

5
推荐指数
1
解决办法
2819
查看次数

为什么在调用类方法之前通过+(Class)类发送类?

我一直在浏览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/.

objective-c

4
推荐指数
1
解决办法
145
查看次数

内存泄漏与以下代码

这是我有内存泄漏的代码:

SCNetworkReachabilityRef reach = SCNetworkReachabilityCreateWithName(kCFAllocatorSy stemDefault, "google.com"); 

SCNetworkConnectionFlags flags;
SCNetworkReachabilityGetFlags(reach, &flags);

[flags release];
[reach release];
Run Code Online (Sandbox Code Playgroud)

那些发布不会这样做.

iphone cocoa-touch objective-c

2
推荐指数
1
解决办法
999
查看次数

将可变引用的匹配放入函数时会出现生命周期问题

假设我有这个代码(它是人为的,因为它大大简化了):

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 …

rust

2
推荐指数
1
解决办法
45
查看次数

圆形图像作为广场

我的图像位于大锚的顶部.圆形图像在视觉上看起来是正确的,但是图像仍然在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)

html css image css3

1
推荐指数
1
解决办法
109
查看次数