用简易代码快速学习Python(九)

本学习系列介绍:

本学习系列主要针对对编程略有了解有其他语言基础并要进一步学习Python的同学,通过简易的代码快速入门掌握Python语言。

系列总目录:
用简易代码快速学习Python(一)
用简易代码快速学习Python(二)
用简易代码快速学习Python(三)
用简易代码快速学习Python(四)
用简易代码快速学习Python(五)
用简易代码快速学习Python(六)
用简易代码快速学习Python(七)
用简易代码快速学习Python(八)
用简易代码快速学习Python(九)
用简易代码快速学习Python(十)

Day09:

numpy和pandas概述:

numpy和pandas都是应用于数据分析的模块,TensorFlow、机器学习、神经网络都会常用到,它们是由C语言所编写的Python模块,运算时会比Python自带的列表、字典等计算速度更快。

pandas是基于numpy的而写的,是numpy的升级版。

numpy和pandas主要处理多维数组的运算。

numpy的一些基本操作:

import numpy as np
array = np.array([[1,2,3],[4,5,6]], dtype=np.int)
print(array)
#输出:
#[[1 2 3]
# [4 5 6]]
print('number of dim:', array.ndim) #输出维度:number of dim: 2
print('shape:', array.shape) #输出行列数:shape: (2, 3)
print('size:', array.size) #输出元素个数:size: 6
array = np.zeros((2,3))
print(array) #生成2行3列全为0的数组。
array = np.ones((2,3))
print(array) #生成2行3列全为1的数组。
array = np.empty((2,3))
print(array) #生成2行3列随机值数组,实际上是基于存储地址当前存储的数据。
array.fill(3)
print(array) #给数组填充成全是3的数组。
array = np.arange(10, 20, 2)
print(array) #生成从10到19,步长为2的一维数组。
print(type(array)) #输出:<class 'numpy.ndarray'>
array = np.arange(12).reshape((3,4))
print(array)
#输出:
#[[ 0  1  2  3]
# [ 4  5  6  7]
# [ 8  9 10 11]]
array = np.linspace(1,10,5)
print(array) #对区间1~10进行线性分割,使用5个分割点,输出:[ 1.    3.25  5.5   7.75 10.  ]

numpy的运算:

import numpy as np
array1 = np.array([4,5,6,7,8])
array2 = np.array([2,3,4,5,6])
print(array1 * array2) #不遵循矩阵乘法法则,只遵循同一位置相运算,输出:[ 8 15 24 35 48]
print(10 * array1) #输出:[40 50 60 70 80]
print(np.sin(array1)) #输出:[-0.7568025  -0.95892427 -0.2794155   0.6569866   0.98935825]
print(array1 > 6) #输出:[False False False  True  True]
array1 = np.array([[1,1],
                   [0,1]])
array2 = np.arange(4).reshape((2,2))
print(array1 * array2)
#输出:
#[[0 1]
# [0 3]]
print(np.dot(array1, array2)) #矩阵乘法,也可以写成array1.dot(array2)或array1 @ array2
#输出:
#[[2 4]
# [2 3]]

array = np.random.random((2,4)) #生成大小为2行4列的随机数组,值为0~1的小数。
print(array)
#输出:
#[[0.54159389 0.18146058 0.33453121 0.71989838]
# [0.59951622 0.03991031 0.45530535 0.5487577 ]]
print(np.sum(array)) #输出:3.420973641550918
print(np.sum(array, axis=0)) #输出:[1.14111011 0.22137089 0.78983656 1.26865608]
print(np.min(array)) #输出:0.039910308405153194
print(np.min(array, axis=1)) #输出:[0.18146058 0.03991031]
print(np.max(array)) #输出:0.719898383570208
print(np.max(array, axis=0)) #输出:[0.59951622 0.18146058 0.45530535 0.71989838]
#axis=0代表每列为一组,axis=1代表每行为一组,不写axis指全体值。
array = np.array([[5,6,7],[3,2,1],[4,5,6]])
print(np.argmax(array)) #输出最大值的下标,输出:2
print(np.argmin(array)) #输出最小值的下标,输出5
print(np.mean(array)) #输出平均值,也可以写成array.mean()或np.average(array)。
print(np.median(array)) #输出中位数。
print(np.cumsum(array)) #输出逐次加和的值:[ 5 11 18 21 23 24 28 33 39]
print(np.diff(array))
#输出后一项减前一项的差值:
#[[ 1  1]
# [-1 -1]
# [ 1  1]]
print(np.nonzero(array)) #输出数组中不为零的值的下标,返回一个元素为数组的元组。
#输出:
#(array([0, 0, 0, 1, 1, 1, 2, 2, 2], dtype=int64), array([0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))
print(np.sort(array)) #对每一行进行排序。
#输出:
#[[5 6 7]
# [1 2 3]
# [4 5 6]]
print(np.transpose(array)) #输出矩阵的转置,也可以写成array.T。
print(np.clip(array, 3, 5)) #让数组中小于3的都变为3,大于5的都变为5。

numpy的一些常用操作:

import numpy as np
array = np.arange(3,15).reshape((3,4))
print(array.flatten()) #把array所有元素变成一行,相当于np.reshape(array,12)。
for item in array.flat:
    print(item) #输出array中每个元素。
A = np.array([1,1,1])
B = np.array([2,2,2])

C = np.vstack((A,B)) #vertical stack 竖直合并数组。
#另一种高级写法:C = np.concatenate((A,B), axis=0),代表在0维度上合并数组。
D = np.hstack((A,B)) #horizontal stack 水平合并数组。
#另一种高级写法:D = np.concatenate((A,B), axis=1),代表在1维度上合并数组。

print(C)
#输出:
#[[1 1 1]
# [2 2 2]]
print(D) #输出:[1 1 1 2 2 2]
A = np.array([1,1,1])
print(A.shape) #输出:(3,)
print(A.T) #当数组为一维时,会转置失败,因为转置不会增加数组维度,输出:[1 1 1]
print(A.T.shape) #输出:(3,)
print(A[np.newaxis,:]) #代表在行上增加维度,输出:[[1 1 1]]
print(A[np.newaxis,:].shape) #输出:(1, 3)
print(A[:,np.newaxis])
#代表在列上增加维度,输出:
#[[1]
# [1]
# [1]]
print(A[:,np.newaxis].shape) #输出:(3, 1)
A = np.arange(12).reshape((3,4))
print(np.split(A, 3, axis=0)) #对A数组进行在0维度上的分割,分成均等的3份,返回一个元素为数组的列表。
#还可以写成np.vsplit(A, 3)。
#输出:[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
print(np.split(A, 2, axis=1)) #对A数组进行在1维度上的分割,分成均等的2份,返回一个元素为数组的列表。
#还可以写成np.hsplit(A, 2)。
#输出:
#[array([[0, 1],
#       [4, 5],
#       [8, 9]]), array([[ 2,  3],
#       [ 6,  7],
#       [10, 11]])]
print(np.array_split(A, 3, axis=1)) #不均等分割。
#输出:
#[array([[0, 1],
#       [4, 5],
#       [8, 9]]), array([[ 2],
#       [ 6],
#       [10]]), array([[ 3],
#       [ 7],
#       [11]])]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘学长丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值