numpy不规则步幅数组
引用一下关于numpy数组在内存中结构的文档:
NumPy中的一些算法可以处理任意步幅的数组。不过,有些算法要求数组是单段的。当传入一个步幅不规则的数组时,系统会自动创建一个副本。
什么是步幅不规则的数组呢?
这个数组算不算 --- numpy.array([[1], [1,2]])
? 如果不算,请给个例子。
1 个回答
7
举个例子:
>>> import numpy as np
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = a[::2]
>>> b
array([0, 2, 4, 6, 8])
a
是一个单段数组,里面的数据紧紧挨在一起,存放在一块连续的内存区域里。而 b
则是对那块内存的一个视图,它的步幅是元素大小的两倍,也就是说它跳过了奇数的内存位置。
因为有些函数需要单段数组,如果你执行 np.sort(b)
,它会先把这些数据块复制到一块连续的内存中,然后才会开始真正的排序。