1234无重复三位数python_Python实战:NumPy 简单入门教程(14)

1234无重复三位数python_Python实战:NumPy 简单入门教程(14)_第1张图片

NumPy 简单入门教程

Python、Numpy 教程 | NumPy 中文​www.numpy.org.cn
1234无重复三位数python_Python实战:NumPy 简单入门教程(14)_第2张图片

NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组。它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验在原生Python中永远无法体验到的速度。

NumPy绝对是科学Python成功的关键之一,如果你想要进入Python中的数据科学和/或机器学习,你就要必须学习它。在我看来,NumPy的API设计得很好,所以我们要开始使用它并不困难。

这是一系列关于科学Python的文章中的第二篇,别忘了看看其他的哟(译者注:并不会放出所有的文章,只摘取部分文章)。

哇哦,你能让NumPy成为你的伙伴并且一起做的事真是太棒了 好吗?

1234无重复三位数python_Python实战:NumPy 简单入门教程(14)_第3张图片

一维度数组

'''
numpy 一维度数组
特点:
    1.array()把python的类型转换成numpy的ndarray类型
    2.转换会保持原始数据不变
内置函数:
    1.最大值  max()
    2.最小值 min()
    3.形状 shape属性  (6,):一维度6长度数组
索引和切片:
    1.通过下标素音
    2.通过start:stop切片
排序:
    1.sort()
    2.sorted()

'''

a = np.array([2,0,1,5,8,3])
print('一维:数据类型',type(a))
print('一维:函数和属性',a.max(),a.min(),a.shape)
print('一维:索引和切片',a[0],a[1:4])
print('一维:未排序',a)
a.sort()
print('一维:以排序',a)

运行结果

runfile('/Users/lpf/Desktop/安康学院pyhton实训/python实训/第八天/numpy教程.py')
一维:数据类型 
一维:函数和属性 8 0 (6,)
一维:索引和切片 2 [0 1 5]
一维:未排序 [2 0 1 5 8 3]
一维:以排序 [0 1 2 3 5 8]

二维度数组

'''
numpy 二维度数组
特点:
    1.array()把python的类型转换成numpy的ndarray类型
    2.转换会保持原始数据不变
内置函数:
    1.最大值  max()
    2.最小值 min()
    3.形状 shape属性  (3, 4)
索引和切片:
    1.通过下标素音
    2.通过start:stop切片
排序:
    1.sort()
    2.sorted()

'''

b = np.array([[1,2,3,4],[8,9,10,11],[4,5,6,7]])
print('二维:数据类型',type(b))
print('二维:函数和属性',b.max(),b.min(),b.shape)
print('二维:索引和切片',b[0],b[0][0:2])
print('二维:列索引',b[:,1])
# np.newaxis 在原本的维度上添加一个一维
print('二维:获取列原本形状',b[:,np.newaxis,1])

运行结果

二维:数据类型 
二维:函数和属性 11 1 (3, 4)
二维:索引和切片 [1 2 3 4] [1 2]
二维:列索引 [2 9 5]
二维:获取列 [[2]
 [9]
 [5]]


arange() reshape() 创建整数多维度的数组

# 创建数组的函数
c = np.arange(0,20)
print('一维度整数数组:',c)

d = np.arange(0,20).reshape((2,10))
print('二维度整数数组:',d)

e = np.arange(0,24).reshape((2,3,4))
print('三维度整数数组:',e)

运行结果

一维度整数数组: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
二维度整数数组: [[ 0  1  2  3  4  5  6  7  8  9]
 [10 11 12 13 14 15 16 17 18 19]]
三维度整数数组: [[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]

创建基数为0,1的数组

astype 改变数组类型

"""
    参数 元祖 shape
    创建数组0填充形状的多维数组 zeros()
        默认类型:float
        dtype 可以设置元素类型 np.uint8 整数
        astype 重置数组元素类型
    创建数组1填充形状的多维数组 ones()
"""
z = np.zeros((2,3,3),dtype=np.uint8)
print(z)

f = z.astype(np.float)
print(f)

z = np.ones((2,3,3),dtype=np.uint8)
print(z)

f = z.astype(np.float)
print(f)

运行结果

[[[0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]]]
[[[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]

 [[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]]
[[[1 1 1]
  [1 1 1]
  [1 1 1]]

 [[1 1 1]
  [1 1 1]
  [1 1 1]]]
[[[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]

 [[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]]

重复数组元素

"""
    repeat() 重复元素 1.元素 2.重复次数
"""
r = np.repeat((3,4,5),4)
print(r)

运行结果

[3 3 3 3 4 4 4 4 5 5 5 5]

广播机制

通过广播机制在numpy算术运算时可以使用不同的数组类型

"""
    广播(Broadcasting)
    广播是一种强大的机制,它允许numpy在执行算术运算时使用不同形状的数组。
"""
"""
    s.shape = b.shape 形状相同
"""
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
print(c)
"""
    s.shape != b.shape 形状不相同
"""
a = np.array([[1,2,3],[10,10,10],[20,20,20],[30,30,30]])
b = np.array([1,2,3])
c = a + b 
print(c)

运行结果

[ 10  40  90 160]
[[ 2  4  6]
 [11 12 13]
 [21 22 23]
 [31 32 33]]

数学函数

"""
    数学函数 包含了大量各种数学运算的函数,三角函数,算数函数,复数处理等
    
    三角函数 sin()正弦 cos()余弦 tan()正切
    
    反三角函数 arcsin()反正弦 arccos()反余弦 arctan()反正切
    
    反转计算成角度 degrees(sin,cos,tan) 返回 角度值
"""

a = np.array([0,30,45,60,90])

"""弧度 = np.pi / 180"""

sin_num = np.sin(a*np.pi / 180)
cos_num = np.cos(a*np.pi / 180)
tan_num = np.tan(a*np.pi / 180)

print("正弦",sin_num)
print("余弦",cos_num)
print("正切",tan_num)

sin_ang = np.arcsin(sin_num)
cos_ang = np.arccos(cos_num)
tan_ang = np.arctan(tan_num)

print("反正弦",sin_ang)
print("反余弦",cos_ang)
print("反正切",tan_ang)

print("反转正弦角度",np.degrees(sin_ang))
print("反转余弦角度",np.degrees(cos_ang))
print("反转正切角度",np.degrees(tan_ang))

运算结果

正弦 [0.         0.5        0.70710678 0.8660254  1.        ]
余弦 [1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01
 6.12323400e-17]
正切 [0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00
 1.63312394e+16]
反正弦 [0.         0.52359878 0.78539816 1.04719755 1.57079633]
反余弦 [0.         0.52359878 0.78539816 1.04719755 1.57079633]
反正切 [0.         0.52359878 0.78539816 1.04719755 1.57079633]
反转正弦角度 [ 0. 30. 45. 60. 90.]
反转余弦角度 [ 0. 30. 45. 60. 90.]
反转正切角度 [ 0. 30. 45. 60. 90.]

舍入函数

"""
    舍入函数 
    around函数  四舍五入值  1.数组 2.舍入的小数位数:默认0
    floor函数  向下取整数
    ceil函数 向上取整数
"""

ar = np.around([20.3,30.63,40.856,40.2345])
print("四舍五入值",ar)

fl = np.floor([20.3,30.63,40.856,40.2345])
print("向下取整数",fl)

ce = np.ceil([20.3,30.63,40.856,40.2345])
print("向上取整数",ce)

运行结果

四舍五入值 [20. 31. 41. 40.]
向下取整数 [20. 30. 40. 40.]
向上取整数 [21. 31. 41. 41.]

算法函数

"""
    算法函数 数组的的加减成除,数组必须具有相同的形状,符合广播规则
    add()
    subtract()
    multiply()
    divide()
    reciprocal() 倒数,元素的倒数 1/4倒数4/1
    power() 1.底数 2.幂次方
    mod() 两数组余数
    
"""

a = np.arange(9,dtype=np.float_).reshape(3,3)
b = np.array([10,10,10])

print("add相加",np.add(a,b))
print("subtract相减",np.subtract(a,b))
print("multiply相乘",np.multiply(a,b))
print("divide相除",np.divide(a,b))

c = np.array([0.25,1.33,1,100])
print("倒数",np.reciprocal(c))

d = np.array([10,100,1000])
print("幂次方数",np.power(d,2))
f = np.array([1,2,3])
print("幂次方数",np.power(d,f))

g = np.array([10,20,30])
h = np.array([3,5,7])
print("余数",np.mod(g,h))

运行结果

add相加 [[10. 11. 12.]
 [13. 14. 15.]
 [16. 17. 18.]]
subtract相减 [[-10.  -9.  -8.]
 [ -7.  -6.  -5.]
 [ -4.  -3.  -2.]]
multiply相乘 [[ 0. 10. 20.]
 [30. 40. 50.]
 [60. 70. 80.]]
divide相除 [[0.  0.1 0.2]
 [0.3 0.4 0.5]
 [0.6 0.7 0.8]]
倒数 [4.        0.7518797 1.        0.01     ]
幂次方数 [    100   10000 1000000]
幂次方数 [        10      10000 1000000000]
余数 [1 0 2]

统计函数

"""
    统计函数 从数组中快速查询最小、最大、百分位标准差、方差等
    amin() 参数:axis 1行比、0列比
    amax() 
    ptp() 最大值-最小值的差
    percentile() 度量,百分比 1.数组 2.半分比 0-100 3.axis
    median() 计算数组的(中位数)中值
    mean() 算数平均值
    std() 标准差 sqrt(mean(x-x.mean())**2)
          标准差是一组数组的平均值分散成都的一种度量
    var() 方差 mean((x-x.mean())**2)
          平均数之差的平方的平均数
    
"""
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print("最小值 行:",np.amin(a,axis=1))
print("最小值 列:",np.amin(a,axis=0))

print("最大值 行:",np.amax(a,axis=1))
print("最大值 列:",np.amax(a,axis=0))

print("最大-小值:",np.ptp(a))
print("最大-小值 列 :",np.ptp(a,axis=1))
print("最大-小值 列:",np.ptp(a,axis=0))

"""50%的分位数,a排序后的中位数"""
print("百分值:",np.percentile(a,50))
print("百分值 行上求:",np.percentile(a,50,axis=1))
print("百分值 列上求:",np.percentile(a,50,axis=0))
print("百分值 维持数组形状不变:",np.percentile(a,50,axis=0,keepdims=True))

"""中位数"""
print("中位数:",np.median(a))
print("中位数 行上求:",np.median(a,axis=1))
print("中位数 列上求:",np.median(a,axis=0))


"""平均值"""
print("平均值:",np.mean(a))
print("平均值 行上求:",np.mean(a,axis=1))
print("平均值 列上求:",np.mean(a,axis=0))

"""标准差"""
print("标准差:",np.std([1,2,3,4]))

"""方差"""
print("方差:",np.var([1,2,3,4]))

运算结果

最小值 行: [3 3 2]
最小值 列: [2 4 3]
最大值 行: [7 8 9]
最大值 列: [8 7 9]
最大-小值: 7
最大-小值 列 : [4 5 7]
最大-小值 列: [6 3 6]
百分值: 4.0
百分值 行上求: [5. 4. 4.]
百分值 列上求: [3. 4. 5.]
百分值 维持数组形状不变: [[3. 4. 5.]]
中位数: 4.0
中位数 行上求: [5. 4. 4.]
中位数 列上求: [3. 4. 5.]
平均值: 5.0
平均值 行上求: [5. 5. 5.]
平均值 列上求: [4.33333333 5.         5.66666667]
标准差: 1.118033988749895
方差: 1.25

1234无重复三位数python_Python实战:NumPy 简单入门教程(14)_第4张图片

你可能感兴趣的:(python,对ndarray全体除以一个数,python,最大值的索引,Python知道cos值求角度)