生成数组的函数
1. arange
arange 类似于Python中的 range 函数,只不过返回的不是列表,而是数组:
arange(start, stop=None, step=1, dtype=None)
产生一个在区间 [start, stop) 之间,以 step 为间隔的数组,如果只输入一个参数,则默认从 0 开始,并以这个值为结束.
注意:不包含末尾,左闭右开
2. linspace
linspace(start, stop, N)
产生 N 个等距分布在 [start, stop]间的元素组成的数组,包括 start, stop。
3. logspace
logspace(start, stop, N)
产生 N 个对数等距分布的数组,默认以10为底。
注意:包含末尾,闭区间
- meshgrid
有时候需要在二维平面中生成一个网格,这时候可以使用 meshgrid 来完成这样的工作:
x_ticks = np.linspace(-1, 1, 5)
y_ticks = np.linspace(-1, 1, 5)
x, y = np.meshgrid(x_ticks, y_ticks)
事实上,x, y 中有很多冗余的元素,这里提供了一个 sparse 的选项:
x, y = np.meshgrid(x_ticks, y_ticks, sparse=True)
meshgrid 可以设置轴排列的先后顺序:
默认为 indexing=‘xy’ 即笛卡尔坐标,对于2维数组,返回行向量 x 和列向量 y
或者使用 indexing=‘ij’ 即矩阵坐标,对于2维数组,返回列向量 x 和行向量 y。
4. ogrid , mgrid
Matlab中有 meshgrid 的用法:
meshgrid(-1:.5:1, -1:.5:1)
Numpy的 meshgrid 并不支持这样的用法,但我们可以使用 ogrid / mgrid 来实现类似这样的用法。
ogrid 与 mgrid 的区别在于:
ogrid 相当于 meshgrid(indexing=‘ij’, sparse=True)
mgrid 相当于 meshgrid(indexing=‘ij’, sparse=False)
注意:
- 这里使用的是中括号
- Matlab 使用的是 start:step:end 的表示,Numpy 使用的是 start: end :step 的表示
- 这里的结果不包括 end 的值
为了包含 end 的值,我们在 step 的位置传入一个复数 5j ,表示我们需要一个 5 个值的数组,此时返回值就会包含 end 的值。
5. r_ , c_
我们可以使用 r_ / c_ 来产生行向量或者列向量。
注意:包不包含末尾,看step的值是否为复数
6. ones , zeros
ones(shape, dtype=float64)
zeros(shape, dtype=float64)
产生一个制定形状的全 0 或全 1 的数组,还可以制定数组类型
7. empty
empty(shape, dtype=float64, order=‘C’)
也可以使用 empty 方法产生一个制定大小的数组(数组所指向的内存未被初始化,所以值随机),再用 fill 方法填充
8. empty_like, ones_like, zeros_like
empty_like(a)
ones_like(a)
zeros_like(a)
产生一个跟 a 大小一样,类型一样的对应数组。
9. identity
indentity(n, dtype=float64)
产生一个 n 乘 n 的单位矩阵: