我在一个图/轴上有几个线条,条形图和艺术家.我想在原始图形/轴上添加不同的组件集.是否可以将原始图形/轴的所有对象复制到另一个图形/轴中,而无需通过代码重绘所有内容?
一种方法是在绘制另一组组件之前删除所有新添加的组件.但是,如果我想将几个轴放入一个图中,这将不起作用.这里已经进行了一些讨论.但它一个接一个地复制/添加所有对象,这并不比在有很多对象时重绘所有对象更好.
@Greg,非常感谢回复.如果我只绘制数据,它将很简单,只需重新绘制数据,甚至复制一些行.然而,这个数字包含了很多艺术家,也可以由用户通过GUI界面添加,或者通过动态脚本添加机器人,我可能在运行时不知道它们的类型.该图是即时生成的.当然,我可以尝试复制所有数据,记录所有艺术家类型,属性并再次重新绘制它们.但它太多了,并参与修改生成这些数字的软件.也许我可以遍历所有可能的对象做copy和add_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从新图中解耦并使其与旧图相结合.
我经常使用布尔数组。所以我也想在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) 我有很长的参数包。我想知道有什么方法可以存储参数包并在以后重复使用。例如,如果有 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) …
我们可以在柯南中使用介子构建系统。但我找不到任何有关如何在 meson.build 中添加 conan 包作为依赖项的文档。在cmake中非常简单,我们可以简单地使用conan_cmake_run。我怎样才能在介子中做类似的事情?
可能重复:
Python"is"运算符使用整数意外运行
通常我会用它type(x) == type(y)来比较类型是否相同.然后x==y用来比较数值是否相等.
然而,有人建议人们可以仅用于z1 is z2比较z1和z2是否包含具有完全相同值的相同类型的数字.在许多情况下,它会成功(特别是对于积极的整体).
但是,有时相同的数字(主要是负数)可以有几个不同的实例.这是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) 我想遍历一个在其他库中定义的结构,其源不在我的控制之下。因此,任何需要像以前的问题一样使用自己的宏/适配器定义结构的库在此处均不可用。我发现最接近的方法是使用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) 正如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) 我有一个 VkImage,有什么方法可以获取用于创建此图像的 createInfo 的某些部分吗?例如,arrayLayers、mipLevels、范围和格式?好像vkGetImage*根本没有这个功能?
我搜索了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) 例如,我有一个用“ \ 0”分隔的文件内容:find ./ -type f -print0 > myfile.txt
然后,我想将文件内容读入一个变量,但仍然保留“ \ 0”。"$(< myfile.txt)"在这种情况下不起作用,所有的“ \ 0”都被分割。
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