一、简单一维数组的创建
arr1 = np.arange(10) #创建内容为0—9的一维数组 [0,1,2,3,4,5,6,7,8,9]
arr1.shape : (10,)
这里说明了一个问题,(10,)指的是一维数组的长度,没有行和列的概念。
对比可知(1,10)指的是一个特殊的二维数组,也即一个行向量,如下:
[[0,1,2,3,4,5,6,7,8,9]]
二、创建二维数组
1、arange+reshape
arr2 = np.arange(0,30,2).reshape(3,5)
2、linspace + resize
arr3 = np.linspace(0,4,9)
arr3.resize(3,3)
这里可以看出reshape 和resize 的区别:reshape 有返回值,而resize没有。
3、矩阵拼接
p = np.ones([2, 3], int)
np.hstack([p, 2*p])#水平拼接
np.vstack([p, 2*p])#竖直拼接
hstack:
[[1 1 1 2 2 2]
[1 1 1 2 2 2]]
vstack:
[[1 1 1]
[1 1 1]
[2 2 2]
[2 2 2]]
三、二维数组转换为一维数组
flatten 和 ravel
a = np.array([[1,2],[3,4]])
b = a.flatten()
c = a.ravel()
扫描二维码关注公众号,回复:
4047420 查看本文章
二者之区别:flatten 返回的是a 数组的一个拷贝,ravel 返回的是a数组本身。
>>> x = np.array([[1, 2], [3, 4]])
>>> x.flatten()[1] = 100
>>> x array([[1, 2],
[3, 4]]) # flatten:返回的是拷贝
>>> x.ravel()[1] = 100
>>> x array([[ 1, 100],
[ 3, 4]])