python - 从索引数组的函数返回等价于 `:`

标签 python arrays numpy

我有一个大数组和一个将索引列表返回到数组中的函数,即

import numpy

n = 500
a = numpy.random.rand(n)

def get_idx(k):
    # More complicated in reality
    return range(n) if k > 6 else range(k)

data = a[get_idx(29)]
data = a[get_idx(30)]
# ...

典型的情况是范围是整个数组,range(n)。不幸的是,a[range(n)]n 成比例,而 a[:] 当然是常数时间。很遗憾,不能从 get_idx 返回 :

我可以从 get_idx 返回什么来用作整个数组的索引?

最佳答案

看看slice

def get_x():
    return slice(2)

a=list(range(100))
a[get_x()]

将返回[0, 1]

更新

根据您的需要,get_x 函数应该是

def get_x(k, n):
    return slice(n if k > 6 else k)

更新

正如@Eric 正确指出的那样,最好传递 None 而不是 n。 所以功能将是:

def get_x(k):
    return slice(None if k > 6 else k)

关于python - 从索引数组的函数返回等价于 `:`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42392260/

相关文章:

python - 无法点击不同结果从内页解析标题

python - 如何从 Python 中的 ROC 曲线中获取最佳阈值?

clojure - NumPy 和 Clojure/Java 之间的 float 差异

python - str.extract 从 pandas DataFrame 的后面开始

python - 二维数组的python总和如何返回列表

java - 如何使用 Java 构造函数实例化数组?

c - 为什么我不能在第一个代码中将五个字符输入到数组中,但在使用第二个代码中所示的 getchar() 时可以?

c - Arduino - 获取响应和解析 json 数组的正确方法

python - 从一个 numpy 数组中获取另一个数组中值的频率

python - 在困惑的能源数据中寻找层次结构