Python数据分析机器学习

Numpy

hi,大家好,我是爱吃香蕉的猴子,最近开始学习一点python数据分析的知识,也希望后面能学到机器学习,但估计学不到,这块知识自己平时也用不到,主要还是为了装逼吧,不管怎么样 学点东西还是可以让人假装充实的(略带心酸) 。。。。。


Numpy的英文全称Numerical Python, 该库时基于python语言的科学数字计算库。
主要功能(课本知识)

  • 提供快速、节约空间的多维数组,并具有矢量运算和复杂的广播能力。
  • 为基于数据的计算提供大量的标准数学函数。
  • 提供各种读写磁盘文件和内存映射文件的工具,打通文件与数组交换数据的通道。
  • 提供线性代数、傅里叶交换、随机生成等高级数学功能。
  • 提供C C++等语言的接口支持,方便专业研究人员扩充Numpy功能。
    主要支持对象
  • ndarray时Numpy的数据存储对象,代表了N维数组,用于存储不同维数的不同类型的数据。
  • ufunc时能够对数组进行处理的标准函数。Numpy的很多函数都是C语言写的,执行非常快。

数组
用array建立数组

  • import numpy as np
  • b1 = np.array([[100, 98, 99], [88, 78, 95]])
  • print(b1)

arange()函数

h1 = np.arange(0, 5, 0.5)
print(h1)
[0.  0.5 1.  1.5 2.  2.5 3.  3.5 4.  4.5]
start; stop; step

linspace()函数

  • 均匀步长的样本数组。
il=np.linspace(0, 4, 4)
print(il)
[0.         1.33333333 2.66666667 4.        ]
start; stop; nums
step = (stop - start) / (num-1)

ones()函数

  • 产生值为0的数组;
    empty()函数
  • 产生不定值的数组
    logspace()函数
  • 返回在对数刻度上均匀间隔的数字;
    full函数
  • 返回指定值的数组;
f10 = np.full(5, 10)
print(f10)
[10 10 10 10 10]

repeat()函数

  • 建立每个元素重复N次的数组;
np.repeat([0, 1, 0], 5)
array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0])

数组属性的使用

ar1 = np.array([['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]) # 建立3行3列值为字符型的二维数组
print(ar1)
ar1.ndim   # 返回数组的维数
ar1.shape  # 返回数组的形状大小
ar1.size   # 数组元素个数

[['a' 'b' 'c']
 ['d' 'e' 'f']
 ['g' 'h' 'i']]

数组方法的使用

  • 改变形状
t1 = np.arange(9)
print(t1)

t2=t1.reshape(3, 3) # 三行三列
print(t2)
[0 1 2 3 4 5 6 7 8]
[[0 1 2]
 [3 4 5]
 [6 7 8]]
  • all方法,判断指定的数组元素是否都是非0,是则返回True, 否则返回false.
m1=np.ones([1, 0, 2]).all()
print(m1)
  • any方法,判断数组元素有非0值,有则返回True, 否则返回False.
  • copy方法,复制数组副本.
ar2 = ar1
id(ar1)
id(ar2)

在映射的情况下,运算速度快,因为无需要开辟新的内存地址,但是改变一个数组的元素值,会影响另外一个数组。

  • astype方法,改变数组元素类型;

数组的对接、分割

  • 数组的对接
    1. 垂直对接
import numpy as np
c1 = np.array([[100, 99, 100],[98, 99, 97]])
print(c1)
c2 = np.array([[88, 88, 97], [85, 82, 89]])
print(c2)

np.vstack((c1, c2))  # vertical  保证列数一样

[[100  99 100]
 [ 98  99  97]]
[[88 88 97]
 [85 82 89]]

array([[100,  99, 100],
       [ 98,  99,  97],
       [ 88,  88,  97],
       [ 85,  82,  89]])
    1. hstack()函数实现数组的水平对接,horizontal
在这里插入代码片r1=np.array(['1', 'Tom', 'China'])
r2=np.array(['man', '10', '13600000000'])
np.hstack((r1, r2))

array(['1', 'Tom', 'China', 'man', '10', '13600000000'], dtype='<U11')
  • 3.数组分割hsplit(ar, N) 函数实现水平分割,ar为需要分割的数组,N为分割数。
r5=np.array([['1', 'Tom', 'China', 'boy', '10', '1360000000'],['2', 'Alice', 'US', 'girl', '9', '138111111']])
r6=np.hsplit(r5, 2)
print(r6)


r5=np.array([['1', 'Tom', 'China', 'boy', '10', '1360000000'],['2', 'Alice', 'US', 'girl', '9', '138111111']])
r6=np.hsplit(r5, 2)
print(r6)
[array([['1', 'Tom', 'China'],
       ['2', 'Alice', 'US']], dtype='<U10'), array([['boy', '10', '1360000000'],
       ['girl', '9', '138111111']], dtype='<U10')]
    1. 垂直分割vsplit(ar, N) ar为分割的数组,N为分割数

                                         Code的搬运工V1.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值