(个人笔记,仅仅介绍入门操作,详细操作见后续)
一、NumPy
提升科学计算效率的包。此处略过安装,安装了anaconda 就不用pip install。
from numpy import *
import numpy as np
主要功能: 处理数组运算,支持高维数组。Python 中也存在如list/array的数据结构,调用numpy的数组,在求和以及其他运算上效率更高。
Ndarray对象:Numpy中用于存放N维数组的对象,指向内存中连续区域。可以用array()方法创建。
1、数组创建:array() arange()
py数组转化:
import numpy as np
data = [1,2,3]
ary_1 = np.array(data)
ary_2 = np.array([[1.1,2,3.2],[4,5.0,6]])
print(ary_1)
print(ary_1.dtype)
print(ary_2)
print(ary_2.dtype)
注:
支持不规范数组创建。
Numpy中数据类型超过python。可以用astype(数据类型)指定数组对象的数据类型。
批量创建:
arange(10):创建array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arange(1,5): array([1, 2, 3, 4])
arange(1,6,2):创建1-6步长为2,array([1, 3, 5])
zeros():创建初始元素为0数组
empty():创建空数组
print(np.arange(10))
print(np.arange(1,5))
print(np.arange(1,6,2))
print(np.zeros((3,6)))#生成3行6列二维数组
print(np.empty((2,3,2)))
注:注意区分范围与维度。
转化py现有数据结构:asarray() 用法类似array() ,可以将元组和元组列表转化为ndarray对象。
2、数组切片与索引
传统数组切片 : 左闭右开
ary_3 = np.arange(10)
print(ary_3[3:6])
高维数组切割:
ary_2 = np.array([[1.1,2,3.2],[4,5.0,6]])
print(ary_2[0])
print(ary_2[0,1])
print(ary_2[...,1])#2列
print(ary_2[0,...])#2行
注:copy()复制值到另一个变量。不把值copy下来python视为引用,数据联动。
value = aray_2[0].copy()
slice():
a = arange(10)
s = slice(2,5)
a[s]
Out:array([2, 3, 4])
b = arange(1,20,2)
print(b[1:3])
Out:[3 5]
reshape(row,col):将数组重构,例如将一维数组改成二维数组
c = arange(12).reshape(3,4)
c[1,3] #取第二行第三列元素
c[1,...]#取第二行,使用代替符 ...
总结索引 :即筛选数组中元素。
布尔索引:传入布尔表达式,如c[c>6] 查找大于6元素。
整数索引:用整数下标索引,传入负数则从后往前索引。
花式索引:利用整数数组进行索引,就是上文提到的reshape。
3、随机数创建
random.rand() #生成0~1随机数
random.rand(1)#生成seed为1随机数
random.rand(3,2).reshape(2,3) #种子 3 2 ,2行3列随机数组
random.randint() # 生成整数
随机选择内容:random.choice(list)
可以传入list 可以随机生成对应的随机矩阵.
注:
random.seed(int)
设置种子
4、数组运算
numpy可以对数组进行加减乘除运算, 免去了写循环。
ary_4 = np.arange(12).reshape(3,4)
print(ary_4)
print(ary_4*2)
print(ary_4+3)
注:numpy内置了许多数学函数,abs、sqrt、log、exp…
转置:transpose()
print(ary_4.transpose())
ary_4 = np.arange(12).reshape(3,4)
print(ary_4)
print(ary_4*2)
print(ary_4+3)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[ 0 2 4 6]
[ 8 10 12 14]
[16 18 20 22]]
[[ 3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]]
print(ary_4.transpose())
[[ 0 4 8]
[ 1 5 9]
[ 2 6 10]
[ 3 7 11]]
网友评论