Numpy 子集化和赋值

假设您想要将 NumPy 数组子集fridge_items化为评分高于 7 的美味食物行。

most_tasty_items = fridge_items[:,10] > 7)

你得到一个布尔值数组。

如果你当时做了:

fridge_items[most_tasty_items,:][:3,:]

当您索引到 fridge_items 时,这里到底发生了什么。我熟悉做 array[1,2] 并返回给定行和列的内容。

由于most_tasty_items是布尔值的一维数组,我们如何使用[:3,:]? 如果它只是一个一维数组,我们可以直接说 [:]。不太明白这个,为什么我们把:第二个参数给[most_tasty_items,:]


小唯快跑啊
浏览 127回答 1
1回答

人到中年有点甜

当您使用两对括号寻址数据时,您将执行两个操作,第一个括号从数据中选择一个新数组,第二个括号寻址新数组。In [71]: np.random.seed(2020)     ...: fridge = np.random.randint(11, size=(30, 5))     ...: tasty = fridge_items[:,4] > 7     ...: tastyfridge = fridge[tasty,:]                                                    In [72]: tastyfridge[:2,:], fridge[tasty][:2,:]                                           Out[72]: (array([[ 8, 10,  9,  3,  7],        [ 4,  7,  1,  4,  9]]), array([[ 8, 10,  9,  3,  7],        [ 4,  7,  1,  4,  9]]))In [73]:           
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python