标签:rto tar 入参 算数 切片 min 之间 范围 type
数据分析:是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律
NumPy(Numerical Python)是Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
shift + Tab 打开帮助文档
np.array(序列)
序列可为任意容器形数据类型及 range() 对象np.array([1, 2, 3]) # 列表转换为数组
# [1, 2, 3]
np.array(序列嵌套)
容器嵌套几层就是几维np.array([[1, 2, 3], [4, 5, 6]])
# [[1, 2, 3]
# [4, 5, 6]]
注意:numpy默认数组的所有元素的类型是相同的,如果传进来的序列中包含不同的类型,则强转为同一类型,优先级:str > float > int
np.arange(start, stop, step, dtype=None)
(类似range)
单值:np.arange(5) # [0 1 2 3 4]
双值:np.arange(1, 10, 2) # [1 3 5 7 9]
三值:np.arange(2, 0, -0.5) # (6, 5, 4)
等差数列:在指定的间隔内返回均匀间隔的数字
语法:np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
np.linspace(0, 10, 10, endpoint=False)
# [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
np.zeros(列)
np.zeros((行, 列))
np.zeros(3) # [0. 0. 0.]
np.zeros((2,3))
# [[0. 0. 0.]
# [0. 0. 0.]]
np.identity(3) # 三行三列
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
np.random.randint(low, high=None, size=None, dtype=‘int‘)
np.random.randint(0, 50, (2,4))
# [[13 7 34 43]
# [15 43 31 48]]
np.random.random((2,3)) # 随机0到1之间,指定两行三列
# [[0.56344919 0.82741278 0.35153991]
# [0.83255027 0.86214153 0.61376901]]
使用下标和切片形式来访问数组中的某个或多个元素
取单行:[行]
取指定多行:[[行, 行]]
取单元素:[行][列]
等价 [行, 列]
取多个元素:[[行,行],[列,列]]
(一个行对应一个列)
a = np.array(([1,2,3],[4,5,6],[7,8,9]))
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
a[0] # [1 2 3]
a[0][2] # 3
a[0,2] # 3
a[[0,2,1],[2,1,0]] # [3 8 4]
a[[0,2]] # 取第一行和最后一行
取行:[行:行]
(几行到几行)
取切块:[行:行,列:列]
(以逗号分隔维度,左边行切片,右边列切片)
嵌套切片:[[行,行],列:列]
a = np.array(([1,2,3],[4,5,6],[7,8,9]))
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
a[:2] # 取前两行
a[:,2] # 取最后一列
a[1:,:2] # 取第二列
a[[0,2],1:] # 混合嵌套索引加切片
# [[2 3]
# [8 9]]
行倒序:[::-1]
(所有行位置反转,列元素反转)
列倒序:[:,::-1]
(所有列位置反转,行元素反转)
全部倒叙:[::-1,::-1]
(按对角线反转)
a = np.array(([1,2,3],[4,5,6],[7,8,9]))
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
a[[0,2],::2] # 指定行,列切片步长
# [[1 3]
# [7 9]]
a[::2,[0,2]] # 行切片步长,指定列
# [[1 3]
# [7 9]]
np.arange(a, 元素)
np.insert(a, 索引, 元素)
注意:都返回为新数组;可增加多个元素写为[元素,元素]
;如果是二维数组则合并成一维数组后再增加
a = np.arange(8) # [0,1,2,3,4,5,6,7]
np.append(a,8) # 追加单元素8
np.append(a,[9,10]) # 追加9和10
np.insert(a,2,[4,5]) # 在索引2插入4和5
a = np.array([[1,2,3],[4,5,6]])
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
a[0,2] = 9 # 改第0行第2列的元素为9
a[1:,1:] = [1,2] # 修改的元素对应复用
# [[1 2 3]
# [4 1 2]
# [7 1 2]]
a[1:,1:] = [1,2],[3,4] # 改为二维数组对应的值
# [[1 2 3]
# [4 1 2]
# [7 3 4]]
ndarray的属性
维度:a.ndim
(返回数组是几维)
形状:a.shape
(返回一个元组:(行, 列, 维度))
总长度:a.size
元素类型:a.dtype
(int32表示32位的整型)
排序求值
axis:0 求每列的和,1 求每行的和,默认所有元素(以下参数同可使用)
a.sum(axis=None)
a.max()/a.min()
a.mean()
a.sort()
(升序)其他操作
a.argmax()/a.argmin()
a.argsort()
(从小到大)注意:必须匹配现有元素的个数
a.shape = 行, 列
(-1表示自动计算,行与列只能有一个)a.reshape(行, 列)
单参数为行a = np.arange(1,9) # [ 1 2 3 4 5 6 7 8]
a1 = a.reshape(-1,4) # 行自动计算,指定4列
# [[1 2 3 4]
# [5 6 7 8]]
改变数组的形状进行增减元素
a.resize(行, 列)
(元素不够用零补充)np.resize(a, (行, 列))
(元素不够用循环原元素补充)a = np.array([[1, 2, 3], [4, 5, 6]])
np.resize(a,(3,4)) # 循环原始数据补充
# [[1 2 3 4]
# [5 6 1 2]
# [3 4 5 6]]
数组转置:b.T
(使原先的行变成列,一维数组不变)
b = np.array(([1,2,3],[4,5,6],[7,8,9]))
# [[1 2 3] # [[1 4 7]
# [4 5 6] --> # [2 5 8]
# [7 8 9]] # [3 6 9]]
数组的级联:np.concatenate((a1,a2),axis=1)
a = np.random.randint(10, 50, (2,3))
# [[13 17 34]
# [15 43 31]]
np.concatenate((a,a),axis=1)
# [[13 17 34 13 17 34]
# [15 43 31 15 43 31]]
注意:
维度必须相同
级联的参数是列表:一定要加中括号或小括号
形状相符:在维度保持一致的前提下,如果进行与行级联,俩的数组行数必须一致,列亦是
所有算数运算符都可使用,可返回新数组
a = np.array([[1,2,3],[4,5,6]])
a - 2 # 每一位都减2
# [[-1 0 1]
# [ 2 3 4]]
2 ** a # 分别计算每一位
# [[ 2 4 8]
# [16 32 64]]
a = np.array([1,2,3,4]) # [1,2,3,4]
a + a # [5 5 5 5]
a ** a # [1 4 9 16]
a * np.array([2]) # [2 4 6 8]
内积:两数组互与对应位上的数相乘,所有位上的乘积相加的和
计算两个数组的内积:np.dot(数组1, 数组2)
x = np.array((1,2,3))
y = np.array((4,5,6))
print(np.dot(x, y)) # 32
print(sum(x * y)) # 32
测试两个数组的对应元素是否足够接近:测试两个数组中对应位置上元素在允许的误差范围内是否相等,并可以接收绝对误差参数和相对误差参数
isclose():函数用来测试每一对元素是否相等并返回包含若干True/False的列表
allclose():函数用来测试所有对应位置上的元素是否都相等并返回单个True或False
语法:isclose(a1, a2, rtol=1e-05, atol=1e-08)
(allcolse同语法)
a:两个数组
rtol:设置相对误差参数
atol:设置绝对误差参数
x=np.array([1,2,3,4.001,5])
y=np.array([1,1.999,3,4.01,5.1])
np.allclose(x,y) # false
np.allclose(x,y,rtol=0.2) # True
np.isclose(x,y) # [ True False True False False]
np.isclose(x,y,atol=0.2) # [ True True True True True]
标签:rto tar 入参 算数 切片 min 之间 范围 type
原文地址:https://www.cnblogs.com/wzos/p/12687782.html