Python数据分析 三剑客篇(一)NumPy

Python数据分析(一)Numpy

NumPy,Pandas和 Matplotlib
“工欲善其事,必先利其器。” Numpy ,pandas 和 Matplotlib 被称为Python数据分析的三剑客模块。首先我们来讲讲安装问题,推荐直接傻瓜式安装Anaconda,里面封装了大量的第三方库,其中就包括了我们的三剑客模块。推荐到清华大学开源镜像站下载。

  • NumPy是一个科学计算库,提供了矩阵运算的功能,一般用它提供一个 Ndarray 对象 。(注:python文件名不要模块名重复,不然创建数组对象时会出现问题:比如说文件名为 numpy.py 这时文件名和numpy冲突
    报错:AttributeError: module ‘numpy’ has no attribute ‘array’)

    1.定向生成数组对象

import numpy as np  #创建多维数组对象  arr1=np.array([1,2,3,4,5]) 
> arr2=np.array([[1,2,3,4,5],[6,7,8,9,0]])  #打印维度  print(arr2.shape) 
> print(arr1.shape)  #输出结果如下:(2, 5) (5,) 多维数组维度(行,列)



 #打印数组的数据类型  
 print(arr1.dtype)  
 print(arr2.dtype)  
 #输出:int64  int64

 #打印数组元素的个数
 print(arr2.size)
 #输出:10

 #格式转换
 arr2.shape=5,2
 arr1.shape=5,1
 print(arr2.shape)
 print(arr1.shape)
 #输出:(5, 2) (5, 1)

2.自动生成数组

#使用arange函数创建一定范围内的等差一维数组
arr4=np.arange(1,2,0.1)
print(arr4)
#输出:[1.  1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9]


#使用linspace函数通过指定开始值,终值和元素个数创建一维数组
arr3=np.linspace(0,1,15)
print(arr3)
'''输出:[0.         0.07142857 0.14285714 0.21428571 0.28571429 0.35714286
 0.42857143 0.5        0.57142857 0.64285714 0.71428571 0.78571429
 0.85714286 0.92857143 1.        ]'''

#使用logspace函数生成等比数列
arr5=np.logspace(0,10,5)
print(arr5)
'''输出:[1.00000000e+00 3.16227766e+02 1.00000000e+05 3.16227766e+07
 1.00000000e+10]'''

#使用zeros函数生成0向量
print(np.zeros((3,4)))
'''输出:
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]'''

#使用ones函数生成全是1的数组
print(np.ones((2,3)))
'''out:
[[1. 1. 1.]
 [1. 1. 1.]]'''

#使用eye函数创建主对角线上全是1的数组
print(print(np.eye(4)))
'''out:
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]'''

#使用diag函数指定主对角线值,list形式传值
print(np.diag([1,2,3,4,5]))
'''out:
[[1 0 0 0 0]
 [0 2 0 0 0]
 [0 0 3 0 0]
 [0 0 0 4 0]
 [0 0 0 0 5]]'''

3.随机生成数组

import numpy as np
#ramdom函数随机生成数组,reshape函数规定其为25行4列
print(np.random.random(100).reshape(25,4))
''' 部分输出:
[[0.41779031 0.31529555 0.17766244 0.72547036]
 [0.95439412 0.80383632 0.41866361 0.17071668]
 ......
 [0.06610952 0.87488625 0.85913323 0.13361665]
 [0.64676173 0.31024695 0.04490706 0.23985548]]

‘''

#服从均匀分布
print(np.random.rand(5,5))
'''输出:
[[0.42083652 0.98716543 0.9742623  0.9402266  0.70753504]
 [0.60180081 0.77633264 0.08107967 0.80593841 0.65563986]
 [0.93934732 0.79088117 0.42302721 0.58801814 0.09153276]
 [0.42432187 0.48180108 0.08489092 0.0856836  0.60130952]
 [0.25887204 0.09300781 0.71942068 0.86411773 0.35567047]]

'''

#服从正态分布
print(np.random.randn(5,5))
'''输出:
[[ 1.27285675  1.45503025  0.27600984 -0.32931654 -0.78800697]
 [-0.4268439  -2.16412776 -0.18753525  0.05182456 -2.13253747]
 [-2.12798807  0.77489968 -0.09857475  0.7274294  -0.01992541]
 [-0.96002384  0.38462981  0.60109209  1.27692944 -0.14912962]
 [ 0.17716558 -1.31903088 -0.33830463 -0.0716197   1.71571588]]
'''

#给定区间生成随机数
print(np.random.randint(1,10,size=[3,3]))
'''输出:
[[7 1 4]
 [8 3 5]
 [5 3 1]]
'''

4.索引和切片
一维数组:

import numpy as np
arr0=np.arange(10)#[0 1 2 3 4 5 6 7 8 9]

print(arr0[2])#打印第三个数

print(arr0[2:6])#切片包括arr0[2]但是不包括arr0[6]

print(arr0[:4])#表示从arr0[0]开始,到指定arr0[3]

print(arr0[-1])#表示最后一个元素

#判断运输算
equal_to_one=(arr0==1)#返回布尔值[False True False False False False False False False False]
print(arr0[equal_to_one])#[1]

#取判断运算(&和 |)
equal_to_one_and_two=(arr0==1)&(arr0==2)
print(arr0[equal_to_one_and_two])#[] 不存在一个数,既等于1又等于2
equal_to_one_or_two=(arr0==1)|(arr0==2)
print(arr0[equal_to_one_or_two])#[1 2]

n维数组

arra=np.array([1,2,3,4,5,6,7,8,9,10,11,12]).reshape(3,4)
'''[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
'''
print(arra[:,3])#取第4列元素
print(arra[0,1:3])#取第0行,第1和第2列元素
print(arra[1:,1:])#取第1,2行,1,2,3列元素

print(arra.ravel())#展平数组,默认横向[ 1  2  3  4  5  6  7  8  9 10 11 12]
print(arra.flatten())#横向展平数组[ 1  2  3  4  5  6  7  8  9 10 11 12]
print(arra.flatten('F'))#纵向展平数组[ 1  5  9  2  6 10  3  7 11  4  8 12]

arra2=np.array([1,2,3,4,5,6,7,8,9,10,11,12]).reshape(3,4)
print(np.hstack((arra,arra2)))
'''
[[ 1  2  3  4  1  2  3  4]
 [ 5  6  7  8  5  6  7  8]
 [ 9 10 11 12  9 10 11 12]]
'''
print(np.vstack((arra,arra2)))
'''
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
'''
print(np.hsplit(arra2,2))
'''
[array([[ 1,  2],
       [ 5,  6],
       [ 9, 10]]), array([[ 3,  4],
       [ 7,  8],
       [11, 12]])]
       '''
print(np.vsplit(arra2,3))
'''[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]]), array([[ 9, 10, 11, 12]])]'''

5.赋值*

import numpy as np
a=np.arange(12)
b=a
b.shape=3,4
print(a.shape)
print(id(a))
print(id(b))
输出
(3, 4)
4557363120
4557363120

‘=’赋值开辟同一块储存单元,通俗来说就是名字不一样,但就是一个东西
‘view()函数’开辟不同的储存单元,但是数据共同
‘copy()函数’仅用于初始化,完全不同的两个东西

6.操作文件(不打算整理后面pandas详细介绍)

7.排序
大致介绍
1.a.sort() 对元素排序
直接进行排序,默认为升序
括号中可以传参数,axis=1表示横向排序,axis=0表示纵向排序
2. a.argsort() 对下标排序 操作基本一致
8.常用统计函数
在这里插入图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值