python科学计算三剑客_Python数据分析 三剑客篇(一)NumPy

本文介绍了Python数据分析三剑客之一的NumPy,重点讲解了如何创建和操作Ndarray对象,包括定向生成、自动生成数组,以及各种索引和切片操作。还涉及到了随机数生成、数组的赋值和排序等基础知识。
摘要由CSDN通过智能技术生成

Python数据分析(一)Numpy

NumPy,Pandas和 Matplotlib

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

NumPy是一个科学计算库,提供了矩阵运算的功能,通常用它提供一个 Ndarray 对象 。(注:python文件名不要模块名重复,否则建立数组对象时会出现问题:好比说文件名为 numpy.py 这时文件名和numpy冲突

报错:AttributeError: module ‘numpy’ has no attribute ‘array’)web

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.自动生成数组dom

#使用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.随机生成数组svg

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维数组spa

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.赋值*code

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()函数’仅用于初始化,彻底不一样的两个东西xml

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

7.排序

大体介绍

1.a.sort() 对元素排序

直接进行排序,默认为升序

括号中能够传参数,axis=1表示横向排序,axis=0表示纵向排序

2. a.argsort() 对下标排序 操做基本一致

8.经常使用统计函数

e3d36e6d1b6bee40aea3e243b41a5463.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值