python - 我在切片范围内使用什么值来包含 numpy 数组中的最后一个值?

标签 python numpy scipy

想象一些 numpy 数组,例如x = np.linspace(1,10)

x[i:j] 让我可以查看范围 [i,j)x。 我喜欢我还可以执行 x[i:-k],它排除了最后的 k 元素。

但是,为了包含最后一个元素,我需要执行 x[i:]

我的问题是:例如,如果我需要遍历 k,我该如何组合这两种表示法。

说我想这样做:

l = list()
for k in [5,4,3,2,1]:
    l.append(x[:-k])
l.append(x[:])

让我恼火的是最后一行。在这个简单的例子中,当然它并没有太大的区别,但有时这会变得更加烦人。我想念的是更像 DRY 的东西。

以下片段当然不会产生预期的结果,但代表了我寻求的代码风格:

l = list()
for k in [5,4,3,2,1,0]:
    l.append(x[:-k])

最佳答案

这有点麻烦,但由于 -00 相同,因此没有简单的解决方案。

一种方法是:

l = list()
for k in [5,4,3,2,1,0]:
    l.append(x[:-k or None])

这是因为当k为0时,-k或NoneNone,而x[:None] 会做你想做的。对于 k 的其他值,-k 或 None 将是 -k

虽然我不确定我自己是否喜欢它。

关于python - 我在切片范围内使用什么值来包含 numpy 数组中的最后一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15627312/

相关文章:

python - 如何使用数据集来拟合 3D 表面?

python - 为什么 scipy.linalg 的方法在 9x9 矩阵上运行速度较慢?

python - scrapy空csv文件

python - llvm-py问题

python - 在 pyparsing 中实现属性访问运算符

python - 如何将 numpy 数组中每行中的第 n 个非零元素更改为零

python - 为什么在计算倒置 bool 值系列的总和时需要括号或新变量?

python - numpy.linalg.lstsq 和 scipy.linalg.lstsq 有什么区别?

python - 如何在两个时间序列之间执行互相关以及我应该在 python 中执行哪些转换?

Python - 将 x 行 csv 文件写入 json 文件