我有SciPy的以下代码段:
resDat = data[scipy.random.randint(0,N,(N,))]
我试图了解这条线的工作原理和原因。 randint
函数似乎在数据indizes的范围内返回N
整数值的列表,所以我解释这行代码是resDat
将成为一个数组来自N
的{{1}}个随机值。
我试图在Python shell中复制它:
data
但是,如果我尝试这个,我会 - 第3行 - 错误
a=[1,2,3,4,5,6]
b=[1,2]
c=a[b]
据我所知,我需要给它一个数字而不是列表。但为什么顶部的生产线呢?我觉得我错过了一些重要的区别,但无法弄清楚哪一个 来自主要的.NET背景,第一行看起来有点像LinQ语句,但它是否具有可比性?
答案 0 :(得分:1)
我认为数据类型为
numpy.ndarray
你可以type(data)
numpy.ndarray
。
此外,scipy.random.randint()
还会返回numpy.ndarray
类型的值。
您可能无法执行lst[[1,2]]
,但可以使用numpy.ndarray
作为另一个numpy.ndarray
的下标。
一个简单的例子 -
import numpy as np
data = np.array([10,15,20,25,30])
print(data[np.array([1,2,3])])
>> array([15,20,25])