【问题标题】:How to vectorize Numpy Array Modification like in Matlab如何像在 Matlab 中一样矢量化 Numpy 数组修改
【发布时间】:2021-04-13 16:43:21
【问题描述】:

使用 Matlab,您可以使用矢量化从索引修改数组:

A = [1, 2, 3, 4, 5, 6, 7, 8, 9]

输出:

A =

 1     2     3     4     5     6     7     8     9

修改:

A([2,4,6:9]) = -1

输出:

A =

 1    -1     3    -1     5    -1    -1    -1    -1

我们如何使用 Numpy Python 做到这一点?

【问题讨论】:

  • A[np.r_[1,3,5:8]]=-1?
  • 感谢广晃!它工作正常:-)!
  • 实际上np.r_ 与MATLAB [2,4,6:9] 做同样的事情,扩展和连接以创建一个单独的索引数组。 MATLAB 在 [...] 语法中封装了很多功能。在 python 中,语法仅限于列表和索引(这是r_ '假装'要做的事情!)。

标签: python matlab numpy


【解决方案1】:

你不能在 numpy 中组合一个花哨的整数索引和一个像这样的切片,所以你有两个选择:

  1. 将切片转换为数字索引:

    A = np.array([1,2,3,4,5,6,7,8,9])
    A[[1, 3, 5, 6, 7, 8]] = -1
    

    注意双方括号:索引是整数列表。

  2. 分别设置花式索引和切片:

    A[[1, 3]] = A[5:9] = -1
    

    请注意,切片的右边界在 python 中是独占的,索引是从零开始的。

【讨论】:

    猜你喜欢
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    相关资源
    最近更新 更多