在numpy数组中切片与在Python中切片列表之间有什么区别?

时间:2019-01-27 15:42:59

标签: python numpy

如果curr_frames是一个numpy数组,那么最后一行是什么意思?

curr_frames = np.array(curr_frames)

idx = map(int,np.linspace(0,len(curr_frames)-1,80))

curr_frames = curr_frames[idx,:,:,:,]

2 个答案:

答案 0 :(得分:2)

主要区别在于numpy切片可以处理多个维度。 在您的示例curr_frames[idx,:,:,:,]中,该数组有4个维,并且您通过提供一个维(idx)的索引进行切片,而:表示法是检索该维的所有维。 / p>

参考文献:

NumPy slicing

Python slicing

答案 1 :(得分:1)

从Python的内置列表到numpy数组的重要区别:

  • 在内置列表中切片时会创建一个副本

    X=[1,2,3,4,5,6]
    Y=X[:3]   #[1,2,3]
    

    通过将X从0-3切片,我们创建了一个副本并将其存储在变量Y中。

我们可以通过更改Y来验证,即使更改Y也不影响X。

    Y[0]=20
    print(Y) # [20,2,3]
    print(X) # [1,2,3,4,5,6]
  • 在numpy中切片时不会创建新副本,但仍引用原始数组

    A=np.array([1,2,3,4,5,6])
    B=A[:3]
    

通过在此处切片A并将其分配给B,仍然B引用原始数组A。

我们可以通过更改B中的元素来验证这一点,它也会更改A中的值。

    B[0]=20
    print(B) # [20,2,3]
    print(A) # [20,2,3,4,5,6]