从另一个数组明显创建数组?
Apparent creation of array from another array?
我有以下来自 SciPy 的代码片段:
resDat = data[scipy.random.randint(0,N,(N,))]
我试图理解的是这条线是如何工作的以及为什么工作。 randint
函数似乎 return 数据范围内的 N
整数值列表,所以我将这行代码解释为 resDat
将成为一个数组,其中 N
个随机值来自 data
。
我试图在 Python shell:
中复制它
a=[1,2,3,4,5,6]
b=[1,2]
c=a[b]
但是,如果我尝试这样做,我会在第 3 行收到错误
TypeError: list indices must be integers, not list
据我所知,我需要给它一个数字而不是一个列表。但是为什么顶部的那条线在工作呢?我觉得我错过了一些重要的区别,但无法弄清楚是哪一个。
来自主要的 .NET 背景第一行看起来有点像 LinQ 语句,但它具有可比性吗?
我相信数据的类型是 -
numpy.ndarray
你可以做 type(data)
结果应该是 numpy.ndarray
.
另外,scipy.random.randint()
也是 returns 类型 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])
我有以下来自 SciPy 的代码片段:
resDat = data[scipy.random.randint(0,N,(N,))]
我试图理解的是这条线是如何工作的以及为什么工作。 randint
函数似乎 return 数据范围内的 N
整数值列表,所以我将这行代码解释为 resDat
将成为一个数组,其中 N
个随机值来自 data
。
我试图在 Python shell:
a=[1,2,3,4,5,6]
b=[1,2]
c=a[b]
但是,如果我尝试这样做,我会在第 3 行收到错误
TypeError: list indices must be integers, not list
据我所知,我需要给它一个数字而不是一个列表。但是为什么顶部的那条线在工作呢?我觉得我错过了一些重要的区别,但无法弄清楚是哪一个。
来自主要的 .NET 背景第一行看起来有点像 LinQ 语句,但它具有可比性吗?
我相信数据的类型是 -
numpy.ndarray
你可以做 type(data)
结果应该是 numpy.ndarray
.
另外,scipy.random.randint()
也是 returns 类型 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])