ndarray查看切片/索引

时间:2016-12-21 11:30:34

标签: python numpy

使用ndarray.view,可以执行以下操作:

import numpy as np
a = np.arange(6)
b = a.view()
b[...] = [5, 5, 5, 5, 5, 5]

ab现在都是[5, 5, 5, 5, 5, 5]

现在,我可以使用切片/索引进行相同的操作吗?那么视图不会显示完整的数组,而只是一个切片?类似的东西:

import numpy as np
a = np.arange(6)
idx = [0, 2, 4]
b = a[idx] # please just return a view into `a` here
b[...] = [5, 5, 5]

现在a当然仍是[0, 1, 2, 3, 4, 5],但我希望将其[5, 1, 5, 3, 5, 5]

在不同数组之间进行映射时,这将非常有用。

1 个答案:

答案 0 :(得分:1)

正如评论中所提到的,我们可以在处理用于索引的图案化步幅时获得视图。

让我们来看看几个案例。

1)案例#1:以index = 0开头2开始:

In [129]: a = np.arange(6)  # Input array

In [130]: idx = [0,2,4] # Simulating these indices for indexing

In [131]: b = a[::2]  # Get view

In [132]: b[...] = [5, 5, 5] # Assign values

In [133]: a
Out[133]: array([5, 1, 5, 3, 5, 5]) # Verify

2)案例#2:开始index = 1并大步迈进2

In [134]: a = np.arange(6)  # Input array

In [135]: idx = [1,3,5] # Simulating these indices for indexing

In [136]: b = a[1::2]  # Get view

In [137]: b[...] = [5, 5, 5] # Assign values

In [138]: a  
Out[138]: array([0, 5, 2, 5, 4, 5]) # Verify

此方法可扩展为多维数组。