小编Wan*_*ang的帖子

matplotlib重复轴还是数字?

我在一个图/轴上有几个线条,条形图和艺术家.我想在原始图形/轴上添加不同的组件集.是否可以将原始图形/轴的所有对象复制到另一个图形/轴中,而无需通过代码重绘所有内容?

一种方法是在绘制另一组组件之前删除所有新添加的组件.但是,如果我想将几个轴放入一个图中,这将不起作用.这里已经进行了一些讨论.但它一个接一个地复制/添加所有对象,这并不比在有很多对象时重绘所有对象更好.

@Greg,非常感谢回复.如果我只绘制数据,它将很简单,只需重新绘制数据,甚至复制一些行.然而,这个数字包含了很多艺术家,也可以由用户通过GUI界面添加,或者通过动态脚本添加机器人,我可能在运行时不知道它们的类型.该图是即时生成的.当然,我可以尝试复制所有数据,记录所有艺术家类型,属性并再次重新绘制它们.但它太多了,并参与修改生成这些数字的软件.也许我可以遍历所有可能的对象做copyadd_xxx.但是,我会有一个更好的方法.

感谢@Joe Kington和他的帖子:"将轴实例添加到另一个数字".

我找到了复制轴并将轴插入子图的方法:

def test_pickleAxes():
    import pickle
    import numpy as npy
    x = npy.arange(0,4*npy.pi,0.2)
    y = npy.sin(x)

    fig, ax = plt.subplots()


    p = pickle.dumps(ax)
    ax2 = pickle.loads(p)

    ax.change_geometry(2,1,1)
    ax2.change_geometry(2,1,2)
    fig._axstack.add(fig._make_key(ax2), ax2)
    plt.show()
Run Code Online (Sandbox Code Playgroud)

然而,在大多数情况下,到目前为止它似乎并不比blit好.这是为什么?因为轴的腌制实际上是整个图形的腌制.当解开它时,它将创建一个新的图形,并且加载的轴实例将与它相关联.甚至我们设法将轴添加到旧图中.ax2仍然只与新数字相关联.因此,当我们尝试与旧图形交互时,ax2将不会相互作用.相反,如果我们缩放/平移新数字,两个数字中的ax2将会改变.如果我们只保存svg或pdf文件,这似乎是一个相当不错的解决方案.

仍然试图找到一种方法将ax2从新图中解耦并使其与旧图相结合.

matplotlib

5
推荐指数
0
解决办法
4167
查看次数

如何在numpy布尔数组上使用cython memoryview?

我经常使用布尔数组。所以我也想在cython中这样做。但是,我只是不能使新的memoryview接口在numpy bool矩阵上工作。

这是我的测试:

def test_oldbuffer_uint8(np.ndarray[np.uint8_t, ndim=2] input):
    cdef size_t i, j
    cdef long total = 0
    cdef size_t J = input.shape[0]
    cdef size_t I = input.shape[1]
    for j in range(J):
        for i in range(I):
            total +=input[i, j]
    return total


def test_memview_uint8(np.uint8_t[:,:] input):
    cdef size_t i, j
    cdef long total = 0
    cdef size_t J = input.shape[0]
    cdef size_t I = input.shape[1]
    for j in range(J):
        for i in range(I):
            total +=input[i, j]
    return total


def test_oldbuffer_bool(np.ndarray[np.uint8_t, ndim=2, cast=True] input):
    cdef …
Run Code Online (Sandbox Code Playgroud)

python numpy cython

5
推荐指数
0
解决办法
247
查看次数

有没有办法存储模板参数包并在以后重用它?

我有很长的参数包。我想知道有什么方法可以存储参数包并在以后重复使用。例如,如果有 2 个模板:

template<class ... Types> struct A {};
template<class ... Types> struct B {};
Run Code Online (Sandbox Code Playgroud)

我有一个专门的类型:

typedef A<int, int, float> A1_t;
Run Code Online (Sandbox Code Playgroud)

是否有任何操作可以让我创建一个使用与 A1_t 相同的参数包的专用类型 B?( B<int, int, float>). 是否有任何方法可以<int, int, float>从 A1_t 中检索或存储它?

我想获得一个专门的类型 B1_t 而不是创建 B1_t 的对象。

A 和 B 描述了完全不同的概念,所以我不能让 B 嵌套在 A 中。

此外,我还想提供参数包来专门化函数模板。

template<class ...Ts>
C<Ts...> func1()
{
}
Run Code Online (Sandbox Code Playgroud)

所以我可以直接调用func1<int, int, float>() 如果我能做这样的事情会很好:

template<typename T>
transform<B, T> func1()
{
}
Run Code Online (Sandbox Code Playgroud)

下一步将与此类似:

template<template<class...Ts> templ>
B<Ts...> func2(Ts ...args)
{
}
Run Code Online (Sandbox Code Playgroud)

所以我可以func2<A1_t>(1, 2, 3.0f) …

c++ c++17

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

有没有办法在介子中使用柯南包?

我们可以在柯南中使用介子构建系统。但我找不到任何有关如何在 meson.build 中添加 conan 包作为依赖项的文档。在cmake中非常简单,我们可以简单地使用conan_cmake_run。我怎样才能在介子中做类似的事情?

meson-build conan

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

为什么一个人不能用"是"比较数字?

可能重复:
Python"is"运算符使用整数意外运行

通常我会用它type(x) == type(y)来比较类型是否相同.然后x==y用来比较数值是否相等.

然而,有人建议人们可以仅用于z1 is z2比较z1z2是否包含具有完全相同值的相同类型的数字.在许多情况下,它会成功(特别是对于积极的整体).

但是,有时相同的数字(主要是负数)可以有几个不同的实例.这是python的预期行为吗?

例如:

>>> for x in range(-20,125):
    z1=x
    z2=int(float(x))
    if z1 is not z2:
        print "z1({z1}; type = {typez1}; id={idz1}) is not z2({z2}; type = {typez2}; id={idz2})".format(z1=z1,typez1=type(z1),idz1=id(z1),z2=z2,typez2=type(z2),idz2=id(z2))


z1(-20; type = <type 'int'>; id=33869592) is not z2(-20; type = <type 'int'>; id=33870384)
z1(-19; type = <type 'int'>; id=33870480) is not z2(-19; type = <type 'int'>; id=33870408)
z1(-18; type = <type 'int'>; id=32981032) is …
Run Code Online (Sandbox Code Playgroud)

python numbers

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

有没有办法遍历结构?

我想遍历一个在其他库中定义的结构,其源不在我的控制之下。因此,任何需要像以前的问题一样使用自己的宏/适配器定义结构的库在此处均不可用。我发现最接近的方法是使用boost::hana. 但是,它仍然需要填充一个适配器,然后我才能对其进行迭代。我在这里附上了一个例子。我想知道有什么方法可以自动化BOOST_HANA_ADAPT_STRUCT然后我不需要在那里填写所有结构成员名称(这些结构总共有一百多个成员)。

#include <iostream>
#include <boost/hana.hpp>
#include <typeinfo>
namespace hana=boost::hana;
struct adapt_test
{
    std::string name;
    int data;
};
BOOST_HANA_ADAPT_STRUCT(
    adapt_test
    , name
    , data
);
auto names = hana::transform(hana::accessors<adapt_test>(), hana::first);
int main() {
    hana::for_each(
        names, 
        [] (auto item)
        {
            std::cout << hana::to<char const *>(item) << std::endl;
        }
    );
    adapt_test s1{"a", 2};
    hana::for_each(
        s1, 
        [] (auto pair)
        {
        std::cout << hana::to<char const *>(hana::first(pair)) << "=" << hana::second(pair) << std::endl;
        }
    ); …
Run Code Online (Sandbox Code Playgroud)

c++

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

Android Camera的callbackbuffer的缓冲区大小需要是图像的8倍大吗?

正如Android文档所说:

对于除YV12之外的格式,缓冲区的大小通过将预览图像宽度,高度和每像素字节相乘来确定.可以从getPreviewSize()读取宽度和高度.可以getBitsPerPixel(int) / 8使用getPreviewFormat()的图像格式计算每像素的字节数.

但大多数在线代码使用bitsperpixel创建缓冲区而不是byteperpixel=bitsperpixel/8.

如果我使用下面的代码使用图像的确切大小(以字节为单位),将导致错误:E/Camera-JNI(3656):回调缓冲区太小了!预计1336320字节,但得到890880字节!这是为什么?为什么缓冲区需要8倍于图像大小?

Camera.Parameters parameters=mCamera.getParameters();
parameters.setPreviewSize(width,height);
mCamera.setParameters(parameters);

int previewFormat=parameters.getPreviewFormat();
int bitsperpixel=ImageFormat.getBitsPerPixel(previewFormat);
int byteperpixel=bitsperpixel/8;
Camera.Size camerasize=parameters.getPreviewSize();
int frame_bytesize=((camerasize.width*camerasize.height)*byteperpixel);

//create buffer
byte[]frameBuffer=new byte[frame_bytesize];

//buffer registry 
mCamera.addCallbackBuffer(frameBuffer);
Run Code Online (Sandbox Code Playgroud)

camera android

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

我可以获取有关 vkimage 的信息吗?

我有一个 VkImage,有什么方法可以获取用于创建此图像的 createInfo 的某些部分吗?例如,arrayLayers、mipLevels、范围和格式?好像vkGetImage*根本没有这个功能?

vulkan

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

boost::hana 如何检查类型是否为 std::可选?

我搜索了boost::hana::traits我找不到任何与检查类型概念相关的内容。例如 is_vector、is_Optional。hana 有没有什么工具可以简化这个?此外,我想根据结果对代码进行分支,因此需要在 hana::eval_if 中使用它。谁能给我举一些例子吗?

我想按照以下方式工作:

hana::eval_if(
    is_vector(hana::decltype_(val)),
    [&](auto _) {std::cout << "is vector\n";},
    [&](auto _) {
        hana::eval_if(
                is_optional(hana::decltype_(val)),
                [&](auto _) { std::cout << "is optional\n"; },
                [&](auto _) { std::cout << "neither vector nor optional\n"; }
        );
    }
);
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-hana

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

如何将文件内容用作变量,但保持“ \ 0”

例如,我有一个用“ \ 0”分隔的文件内容:find ./ -type f -print0 > myfile.txt 然后,我想将文件内容读入一个变量,但仍然保留“ \ 0”。"$(< myfile.txt)"在这种情况下不起作用,所有的“ \ 0”都被分割。

bash

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

标签 统计

c++ ×3

python ×2

android ×1

bash ×1

boost ×1

boost-hana ×1

c++17 ×1

camera ×1

conan ×1

cython ×1

matplotlib ×1

meson-build ×1

numbers ×1

numpy ×1

vulkan ×1