numpy不规则步幅数组

4 投票
1 回答
878 浏览
提问于 2025-04-18 14:42

引用一下关于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),它会先把这些数据块复制到一块连续的内存中,然后才会开始真正的排序。

撰写回答