1. np.array 可将序列对象转换为数组,可以生成多维数组,但是要对齐,List可包含多个子列表,
a = [[1,2,3],[4,5,6]]
b = np.array(a)
2.低精度和高精度一起,会转换为高精度的
a = np.array((1,2.0,3,4,5,6))
b = a.reshape(2,3)
print(a.shape, a.dtype)
3. np.arange(n) 生成一维从0到n-1的数组,可以设定范围和步长,如np.arange(1,10,2)
Python 内置的range生成从0到n-1的列表,一般只用于for循环中
a = np.arange(15)
for i in range(15):
print(i)
4. np.ones .zeros .empty 里面需要传入一个元组,来指定创建什么形状,同时可以指定数据类型dtype
a = np.ones((2,2))
b = np.zeros(10)
5. np.astype 实现数据类型转换,string类型的数字也可以转换
a = np.array((1,2,3,4))
print(a.dtype)
b = a.astype(np.float64)
print(b.dtype)
6. 大小相等的数组之间的任何运算都会元素级的,特别注意数组之间的乘法是元素级的,要实现矩阵乘法,需要用np.dot
7. 数组的切片是原始数组的视图,数据在赋值时不会复制,想要复制数据,需要在切片后加.copy()
8. 数组切片用方括号,索引有几种形式,如[1,2], [:,3],[:2,3:] 注意索引的结尾数要减1,开头不需要。还有花式索引,a[[1,2,3]] 取对应的行,a[:,[1,2,3]]去对应的列,花式索引会复制数据, 注意a[[1,2,3],[1,2,3]] 取的是3个对应位置的数字
a = np.arange(30).reshape(6,5)
b = a[:2,3:]
c = a[[1,5,2]]
d = a[:,[3,4,1]]