从另一个数组明显创建数组?

2024-04-19 23:47:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有来自SciPy的以下代码片段:

resDat = data[scipy.random.randint(0,N,(N,))]

我试图理解的是这条线是如何工作的,以及为什么工作的。randint函数似乎返回数据索引范围内的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语句,但它有可比性吗


Tags: 数据函数代码目的列表data整数random
1条回答
网友
1楼 · 发布于 2024-04-19 23:47:51

我相信数据应该是-

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])

相关问题 更多 >