python - NumPy 2D 数组普通切片与基于 bool 的切片

标签 python arrays numpy

我是 Numpy 的新手,我正在尝试 2D 数组 Numpy, 当以两种不同的方式对数组进行切片时,我进行了以下观察

a = numpy.array([[1,2,3,4,5],[1,2,3,4,5]])
slice1 = a[:,:3]
slice1[0,0] = 100
print(a) 
-- gives, 100 2 3 4 5
           1  2 3 4 5

根据 numpy 文档,此行为是预期的 但考虑一下这个切片

a = numpy.array([[1,2,3,4,5],[1,2,3,4,5]])
slice2 = a[[True,True],:3]
slice2[0,0] = 100
print(a) 
-- gives us
1 2 3 4 5
1 2 3 4 5

谁能解释一下这两种方法之间的区别

最佳答案

来自NumPy indexing documentation :

Advanced indexing always returns a copy of the data (contrast with basic slicing that returns a view).

毕竟,如果您想让 some_arr[[True, False, False, True, True, False]] 返回 View ,就没有办法让跨步起作用。

关于python - NumPy 2D 数组普通切片与基于 bool 的切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34457239/

相关文章:

python - Python Web 应用程序的预定后台函数

wcf - 将流保存到文件

c - Malloc 字符串数组 - C

Python如何将形状为(1000L, 1L)的值转换为形状为(1000L,)的值

python - 选择优化最小数量的元素以跨越一个区域

python - 在 Python 中通过正则表达式分解 CSV

python - eclipse : debug shared library loaded from python

ios - SWIFT TableView 错误

python - 使用 scipy.interpolate.splrep 函数

python - 比较 NumPy 数组以便 NaN 比较相等