小编Aka*_*ari的帖子

Numpy 排列但步长加倍

我目前正在寻找一种使用类似于 的方法np.arange,但可以选择将步长加倍。
我知道np.arange创建均匀间隔的数组并且不应该支持可变步长。我想要的输出是类似于np.array([0,1,3,7,15,31,...]).
有没有内置函数可以做到这一点?
我必须经常使用它,因此更愿意避免 for 循环或类似的慢速方法。

python numpy

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

Matplotlib 颜色条 log2

我想知道如何使颜色条上的刻度显示为 log2。

import matplotlib.pyplot as plt
from matplotlib import ticker
x = np.arange(1000)
y = x.copy()
c = x.copy()
scatter_plot = plt.scatter(x, y, c=c, cmap='viridis', norm=matplotlib.colors.LogNorm())
formatter = ticker.LogFormatter(2)
cbar = plt.colorbar(scatter_plot, format=formatter)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这给了我这个图像:
彩条图像

正如您所看到的,有一些额外的刻度,但它没有正确应用它们。我希望刻度显示为 log2。任何帮助表示赞赏。

python matplotlib scatter-plot

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

C++:交换向量中所有元组的第一个和第二个元素

有没有办法交换向量中所有元组的第一个和第二个元素?假设我有这样的事情:

#include<vector>
#include<tuple>

int main()
{
std::vector<std::tuple<int,int>> my_vector;
my_vector.push_back(std::make_tuple(1,2));
my_vector.push_back(std::make_tuple(3,4));
}
Run Code Online (Sandbox Code Playgroud)

元组的第一个元素现在是 1 和 3,第二个元素是 2 和 4。是否可以轻松地将 2 和 4 设为第一个元素?

c++ swap tuples vector

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

提取向量的向量子集

我知道如何从法向量中提取子集,以及如何从另一个向量内的向量中提取子集。我现在的问题是如何提取另一个向量内的所有向量的子集。

例如:我在另一个向量中有三个向量:

std::vector<std::vector<int>> my_vec;
std::vector<int> vec_1{1,2,3,4,5};
std::vector<int> vec_2{11,12,13,14,15};
std::vector<int> vec_3{21,22,23,24,25};

my_vec.push_back(vec_1);
my_vec.push_back(vec_2);
my_vec.push_back(vec_3);
Run Code Online (Sandbox Code Playgroud)

我现在想做的是创建一个新向量,其中包含每个向量的第三个和第四个元素的子集。我试过这个:

#include<vector>
#include <iostream>

int main()
{
std::vector<std::vector<int>> my_vec;
std::vector<int> vec_1{1,2,3,4,5};
std::vector<int> vec_2{11,12,13,14,15};
std::vector<int> vec_3{21,22,23,24,25};

my_vec.push_back(vec_1);
my_vec.push_back(vec_2);
my_vec.push_back(vec_3);

// For a normal vector
std::vector<int> vec_1_subset(vec_1.begin()+2,vec_1.begin()+4);

for (auto& element: vec_1_subset)
{
std::cout<<element<<std::endl;
}

// For extracting from a single vector inside another vector
std::vector<int> my_vec_subset((my_vec[0]).begin()+2,(my_vec[0]).begin()+4);

for (auto& element: my_vec_subset)
{
std::cout<<element<<std::endl;
}

// For several vectors inside a vector ?
std::vector<std::vector<int>> my_vec_test_subset(my_vec.begin()+2,my_vec.begin()+4);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

最后一次尝试创建一条错误消息。

c++ vector subset

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

标签 统计

c++ ×2

python ×2

vector ×2

matplotlib ×1

numpy ×1

scatter-plot ×1

subset ×1

swap ×1

tuples ×1