You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让numpy.linspace生成的数组必含特定值且不调整边界与点数?

问题描述

我用numpy.linspace生成数组供其他函数遍历,示例函数如下:

def fun(array):
    newarray= []
    for i in array:
        newarray.append(i**2)
    return newarray

现在希望生成的数组必须包含数值2,要求用numpy.linspace相关方法在生成时实现,不调整边界(0到20)和总点数(30),且不事后插入该值。

解决方法

直接用numpy.linspace(0,20,30)无法生成包含2的数组——该方法是均分区间,步长为20/(30-1)≈0.6897,2不是这个步长的整数倍(2/0.6897≈2.9),因此2不会出现在默认生成的序列里。

要在生成阶段就得到满足要求的数组,可以将区间拆分为[0,2]和[2,20]两部分分别生成序列,再拼接成最终数组:

  1. 分配点数:设[0,2]包含k+1个点(含0和2),[2,20]包含m+1个点(含2和20),由于2会被重复计算一次,因此(k+1)+(m+1)-1=30,即k+m=29。你可以任意选择正整数k和m满足该等式,比如取k=4、m=25。
  2. 生成并拼接序列:
import numpy as np

# 生成[0,2]区间的5个点(含0和2)
part1 = np.linspace(0, 2, 5)
# 生成[2,20]区间的26个点,去掉重复的2
part2 = np.linspace(2, 20, 26)[1:]
# 拼接得到最终数组
result = np.concatenate((part1, part2))

print(result.size)  # 输出30,符合点数要求
print(2 in result)  # 输出True,包含数值2

这样生成的数组既满足边界、点数要求,又在生成阶段就包含2,无需事后修改。

内容的提问来源于stack exchange,提问作者Indiano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:10:25