【问题标题】:How to select a portion of a NumPy array efficiently?如何有效地选择 NumPy 数组的一部分?
【发布时间】:2015-11-16 14:15:45
【问题描述】:

我正在从 Matlab/octve 切换到 Numpy/Scipy。

要选择 Matlab 数组的一段,这很容易。 例如

>> x = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]
x =

     1     2     3     4
     5     6     7     8
     9    10    11    12

>> y = x(2:3, 1:2)

y =

     5     6
     9    10

x = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

【问题讨论】:

标签: arrays matlab numpy


【解决方案1】:

正如 NumPy 文档中提到的 Indexing > Other indexing options

切片和跨步的工作方式与列表和元组的工作方式完全相同,只是它们也可以应用于多个维度。

对于你的例子,这意味着

import numpy as np
x = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
# array([[ 1,  2,  3,  4],
#        [ 5,  6,  7,  8],
#        [ 9, 10, 11, 12]])

x[1:3, 0:2]
# => array([[ 5,  6],
#           [ 9, 10]])

与 Matlab 最显着的区别可能是索引是从零开始的(即,第一个元素的索引为 0),并且索引范围(在 Python 中称为“切片”)用专有上限表示:l[4:7]获取 l[4]l[5]l[6](第 3 到第 7 个元素),但不是 l[7](第 8 个元素)。

Python tutorial's section on lists 将让您了解索引和切片如何适用于普通(一维)集合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2020-01-25
    • 2016-07-21
    相关资源
    最近更新 更多