0 前言
数组的引入
在python里有列表,元组,字典,集合,在python里其实是没有数组的,但是NumPy引入了ndarray(数组对象)
这是因为引入ndarray,使得一维向量更像单个数据。
1.ndarray数组的创建
1.1 利用列表/元组
a=np.array([1,2,3,5])
b=np.array((1,2,3,5))
1.2 利用NumPy中的函数
1.2.1
a=np.arange(4)
b=np.zero(4,5)
c=np.ones(4,5)# 是ones 不是one,不要拼错了单词
d=np.full((3,4),6)
e=np.eye(5) # 是eye 不是eyes,不要拼错了单词
1.2.2
1.2.3
a=np.linspace(0,6,4) # 生成数组[0. 2. 4. 6.],即把0到6 均等分,生成4个数
b=np.linspace(0,6,4,endpoint=False)#生成数组[0. 1.5 3. 4.5]
#对于数组b,因为endpoint=False,你可以理解为生成了[0. 1.5 3. 4.5 6.0],但是我们只要4个数,即不要最后一个数
c=np.concatenate(a,b)
2.ndarray数组的变换
在创建数组时,可以指定其类型:
a=np.ones((3,4),dtype=np.int32)
在创建后,可以改变其维度和类型
2.1改变ndarray数组的维度
2.1.1
要注意resize
reshape
的区别:
resize
会改变数组本身
2.1.2
在调用函数flatten
swapaxes
时,原数组不变!!
2.2 改变ndarray数组的维度
a=np.ones((3,4),dtype=np.int)
new_a=a.astype(np.float)
new_b=a.astype(np.int)#一定会创建一个新数组
和上面的一样,调用astype
,原数组不变
而且一定会创建一个新数组,即使数组类型根本没变
2.3 ndarray数组向列表的转变
3.ndarray数组的索引和切片
索引:获取数组中特定位置元素的过程
切片:获取数组子集元素的过程
3.1 一维数组的索引和切片
3.1 多维数组的索引和切片
要注意,数组从零开始计算
4.ndarray数组的计算
数组与标量的运算会作用于数组中的每一个元素