您想创建一个子数组,其中只包含索引在desired_ages
中的值。
Python没有直接对应此操作的语法,但是列表推导可以完成这个任务:
result = [value for index, value in enumerate(data.values) if index in desired_ages]
然而,如果这样做,Python需要扫描
data.values
中的每个元素以查找
desired_ages
,这会很慢。 如果您能插入...
desired_ages = set(desired_ages)
在前一行中,这将提高性能。(您可以在常数时间内确定一个值是否在集合中,而不受集合大小的影响。)
完整示例
import numpy as np
ages = np.arange(100)
values = np.random.uniform(low=0, high= 1, size = ages.shape)
data = np.core.rec.fromarrays([ages, values], names='ages,values')
desired_ages = np.array([1,4, 16, 29, 80])
result = [value for index, value in enumerate(data.values) if index in desired_ages]
print result
[0.45852624094611272, 0.0099713014816563694, 0.26695859251958864, 0.10143425810157047, 0.93647796171383935]