numpy.linspace
函数在Python中用于生成一个等差数列,即在指定的区间内生成N个均匀分布的样本,包括区间的两端点。下面是一个C++函数,实现了与numpy.linspace
相似的功能。
C++ 实现
#include <vector>
#include <iostream>
// linspace 函数生成一个等差数列
// start 为序列的起始值
// stop 为序列的结束值
// num 为生成的样本数
std::vector<double> linspace(double start, double stop, int num) {
std::vector<double> result;
if (num <= 0) {
return result; // 返回空vector如果样本数不合法
} else if (num == 1) {
// 只有一个样本时,返回起始值
result.push_back(start);
return result;
} else {
// 计算步长
double step = (stop - start) / (num - 1);
for (int i = 0; i < num; ++i) {
result.push_back(start + i * step);
}
}
return result;
}
int main() {
// 用法示例
double start = 0.0;
double stop = 1.0;
int num = 5;
std::vector<double> result = linspace(start, stop, num);
std::cout << "linspace(" << start << ", " << stop << ", " << num << "):";
for (double val : result) {
std::cout << " " << val;
}
std::cout << std::endl;
return 0;
}
这个函数首先检查num
的值。如果num
小于等于0,它返回一个空的vector<double>
。如果num
等于1,它返回一个只包含start
值的vector<double>
。对于其他情况,它计算每一步的步长为(stop - start) / (num - 1)
,然后生成等差数列,包括起始值和结束值。
这个简单的实现在功能上类似于numpy.linspace
,可以用来在C++项目中生成等差数列。