Python数据分析–Numpy常用函数介绍(1)–工具安装及Numpy介绍

Anaconda 是一个跨平台的版本,通过命令行来管理安装包。进行大规模数据处理、预测分析和科学计算。它包括近 200 个工具包,大数据处理需要用到的常见包有 NumPy 、 SciPy 、 pandas 、 IPython 、 Matplotlib 、 Scikit-learn 、gensim、nltk、networkx、beautifulsoup4和statsmodels 等。
可以直接通过命令进行安装。如下图,分别安装上述相关文件(示例安装pandas,其他类似)。

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

一、NumPy(Numerical Python)

    NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,也针对数组运算提供大量的数学函数库。NumPy 为开放源代码并且由许多协作者共同维护开发,是一个运行速度非常快的数学库,用于数组计算。

     NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用,可广泛用于替代 MatLab,是一个强大的科学计算环境,便于后期学习数据科学和者机器学习。 SciPy 是一个开源的 Python 算法库和数学工具包, 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。 

Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面,是为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API),前期在数据可视化中做作过简单的介绍。

1、numpy中的数组操作及代码

NumPy中的ndarray是一个多维数组对象,该对象由两部分组成:实际的数据和描述这些数据的元数据,大部分的数组操作仅仅修改元数据部分。

import numpy as np  #导入numpy包,并另命令为np

a = np.arange(5)  # 调用numpy中的函数arange,函数创建数组
print(a.dtype)   # 打印出数组a的数据类型
print(a.shape)  #数组的 shape 属性返回一个元组(tuple),元组中的元素即为NumPy数组每一个维度上的大小
print('n')
#创建多维数组
m = np.array([np.arange(5), np.arange(5)]) #列表作为参数传给array函数,从而创建了一个5×2的数组
print(m)

#选取数组元素
print(m[0,0])
print(m[0,1])
print(m[1,1])
print(m[1,2])
print(m[1,3])

# NumPy 自定义的异构数据类型,该数据类型包括一个用字符串记录的名字、一个用
# 整数记录的数字以及一个用浮点数记录的价格 
t = np.dtype([('name', np.str_, 40), ('numitems', np.int32), ('price',np.float32)])
print(t)

# 一维数组的索引和切片
a = np.arange(9)
print(a[3:7])
print('n')
#多维数组的切片和索引
b = np.arange(24).reshape(2,3,4)  #reshape函数的作用是改变数组的“形状”,也就是改变数组的维度
#其参数为一个正整数元组,分别指定数组在每个维度上的大小

print(b.shape)
print('n')
print(b)
print('n')
print(b[0])
print('n')
print(b[:,0,0]) #下标用英文标点的冒号:来代替,表示不限该位置的参数,即打印出b的第1行,第1列的所有元组的数据。

运行结果如下:

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

至于具体更详细的用法,可以多试试。

二、numpy改变数组的维度

上述的reshape函数可以将一维数组[0,1,2,...,23]转变为具有2个元素,每个元素是一个二维数组的三维数组,同样,也可以将多维数组转变为一维数组(将数组展平)。

可以用 ravel 等函数完成相关操作,见如下代码:

import numpy as np  #导入numpy包,并另命令为np

c = np.array([   #先定义一个numpy的多维数组
    [[0,1,2,3],[4,5,6,7],[8,9,10,11]],
    [[12,13, 14,15],[16,17,18,19],[20,21,22,23]]
     ])
e=d=c  
print (c.ravel())
print('n')
print(c.flatten())
print('n')
#用元组设置维度
d.shape = (6,4)
print(d)
print('n')
# transpose用于转置,即行列互换,即线性代数中的转置矩阵
print(e.transpose())

运行结果:

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

三、数组的组合

NumPy数组有水平组合、垂直组合和深度组合等多种组合方式,使用 vstack 、dstack 、 hstack 、 column_stack 、 row_stack 以及 concatenate 等函数来完成数组的组合。

import numpy as np  #导入numpy包,并另命令为np

a = np.arange(9).reshape(3,3)#定义a为3行3列的二维数组
b=2*a #定义b,且b的每个元素均为a的两倍。

print(a)  #打印出a数列
print('n')
print(b) #打印出b数列
print('n')

运行结果:

[[0 1 2]
 [3 4 5]
 [6 7 8]]


[[ 0  2  4]
 [ 6  8 10]
 [12 14 16]] 

分别看一下组合后的运行结果,代码如下:

import numpy as np  #导入numpy包,并另命令为np

a = np.arange(9).reshape(3,3)   #定义a为3行3列的二维数组
b=2*a  #定义b,且b的每个元素均为a的两倍,数组结构与a一致。

#水平组合:将ndarray对象构成的元组作为参数,传给hstack 函数
print(np.hstack((a, b)))  #水平组合
print('n')
print(np.concatenate((a, b), axis=1))  #注意axis参数
print('n')
#垂直组合
print(np.vstack((a, b)))
print('n')
print(np.concatenate((a, b), axis=0))#注意axis=0是默认值,即可以不设置。
print('n')

运行结果如下:

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

很明显,上述函数np.hstack((a,b))的结果显示为将a的行与b的行连成一个更长的行(np.concatenate()函数一样,只是多了一个参数),相当于增加了数组的列数。

而np.vstack((a,b)),则是结合成具有更多的行,而列数不变。用二维表示如下:

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍                                             Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

接下来看一下深度组合、列组合、行组合

import numpy as np  #导入numpy包,并另命令为np

a = np.arange(9).reshape(3,3)   #定义a为3行3列的二维数组
b=2*a  #定义b,且b的每个元素均为a的两倍,数组结构与a一致。

#深度组合 将相同的元组作为参数传给 dstack
print(np.dstack((a, b)))
print('n')

#列组合
print(np.column_stack((a, b)))#对于二维数组,column_stack 与hstack的效果是相同
print('n') 
# 行组合
print(np.row_stack((a,b)))#对于二维数组,column_stack与vstack 的效果是相同

 

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

从上可以看出,深度组合,就是将一系列数组沿着纵轴(深度)方向进行层叠组合,比如这里只有2个数组a和b,所以深度只有2,由于a和b都是3*3,就形成如下结果:

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

二维数组中,行组合和列组合与水平组合、垂直组合一样,不作过多介绍。

四、数组的分割

数组能组合 ,当然也能分割成多个子数组。像组合一样,也可分为水平分割、垂直分割、深度分割。

1、水平分割 和垂直分割

import numpy as np  #导入numpy包,并另命令为np

a = np.array([[0, 1, 2],[3, 4, 5],[6, 7, 8]]) #定义一个多维数组
#水平分割
print(np.hsplit(a,3))  #hsplit把数组沿着水平方向分割为3个相同大小的子数组
# 或者
print(np.split(a,3,axis=1)) #同hsplit

#垂直分割
print(np.vsplit(a,3))  #vsplit把数组沿着垂直方向分割为3个相同大小的子数组
# 或者
print(np.split(a,3,axis=0)) #同vsplit,注意参数

运行结果:

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

整理后,得到:[array([[0],[3],[6]]), array([[1], [4],[7]]), array([[2],[5],[8]])]也就是将0,3,6归为一组,注意:都是分别用"[ ]"和","分开的。

2、深度分割

import numpy as np  #导入numpy包,并另命令为np

c = np.array(np.arange(27).reshape(3, 3, 3))  #创建一个多维数组,并设置
print(np.dsplit(c,3)) 

运行结果如下:

[array([[[ 0],[ 3],[ 6]],[[ 9],[12],[15]],[[18],[21],[24]]]),

array([[[ 1],[ 4],[ 7]],[[10],[13],[16]],[[19],[22],[25]]]),

array([[[ 2],[ 5],[ 8]],[[11],[14],[17]],[[20],[23],[26]]])

]

生成的C数组为 : 

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

 这三块数据应该像纸张一样叠加的,0,3,6的下一层对应的是9,12,15,再下一层是18,21,24。

五、Numpy数组的其他属性

在开始的代码中有 .dtype和 .shape分别是数组的两个不同的属性,除此之外,还有其他属性,如下:

import numpy as np  #导入numpy包,并另命令为np

a = np.array([[0, 1, 2],[3, 4, 5],[6, 7, 8]]) #定义一个多维数组
print(a.dtype)    #数组a的数据类型
print(a.shape)    #数组a的维数
print(a.ndim)     #给出数组的维数,或数组轴的个数
print(a.size)     #给出数组元素的总个数
print(a.itemsize) #元素在内存中所占的字节数
print(a.nbytes)   #元素在内存中所占的存储空间,itemsize和size属性值的乘积

#复数的表示
b =  np.array([1.j + 1, 2.j + 3])
print(b.real)#打印实数
print(b.imag)#打印虚数部分

c = np.arange(4).reshape(2,2)

print(c)

f = c.flat   #flat属性,可以像遍历一维数组一样去遍历任意的多维数组
for item in f :
    print(item)
    
#或者获取多个元素
print( c.flat[[1,3]])
#flat 属性是一个可赋值的属性。对flat属性赋值将导致整个数组的元素都被覆盖
c.flat=5   # 对flat属性赋值将导致整个数组的元素都被覆盖
print(c)

b =  np.array([1.j + 1, 2.j + 3])  # 数组的转换
print( b.tolist())

print( b.astype(int)) #astype 函数可以在转换数组时指定数据类型int

运行结果如下:

Python数据分析--Numpy常用函数介绍(1)--工具安装及Numpy介绍

小结:

上述列举了许多有关NumPy的基础知识:数据类型和NumPy数组。类似于Python列表,NumPy数组也可以方便地进行切片和索引操作。但在多维数组上,NumPy有明显的优势。
对涉及改变数组维度的操作有很多种——组合、调整、设置维度和分割等,列举了实用函数进行了说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数据分析–Numpy常用函数介绍(1)–工具安装及Numpy介绍 - Python技术站

(0)
上一篇 2023年4月2日 下午5:35
下一篇 2023年4月2日

相关文章

  • python数据可视化-matplotlib入门(3)-利用随机函数生成变化图形2

     鉴于上一篇中最后三个问题: 1、上述程序是否能进行优化(比如功能相同的) 2、创建三个3个实例,用了3个语句,能否建一个函数,只输入一个数n,就自动创建n个实例?同时,每个实例的num_times随机,(n比较大时,num_times应该比较小) 3、当实现上述功能后,程序运行,只输入一个参数(创建实例的个数),就会自动生成对应的num_times,并分别…

    2023年4月2日
    00
  • python入门基础(1)—安装

      说明:0基础,那就先练习python语言基础知识,等基础知识牢固了,再对各开发平台分别进行介绍。这里只介绍两个简单而又容易搭建开发平台Anaconda和pycharm   Anaconda是一个开源的Python发行版本,包括Conda、Python以及一堆工具包,比如:numpy、pandas等等180多个科学包及其依赖项,因后期涉及数据处理及深度学习…

    2023年4月2日
    00
  • python入门基础(3) 字符串、列表访问

    一、列表 列表由一系列按特定顺序排列的多个元素或空元素组成,包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;列表中各元素间可以没有任何关系;实际使用过程中,通常给列表指定一个表示复数的名称,如names,cars,letters,dog_names。 列表大多数是是动态的,列表创建后,将随着程序的运行,列表的长度,数值(或字符串值)都会不断变化,需…

    2023年4月2日
    00
  • python入门基础(10)–类的创建、使用和继承

    在面向对象编程中,先编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。基于类创建对象时,每个对象都自动具备类的通用行为,同时可根据需要赋予每个对象独特的个性,在实例中存储特定信息及操作根据类来创建对象被称为实例化类,也可以用来扩展既有类的功能,让相似的类能够高效地共享代码 一、创建和使用类、实例 编写一个学生的类,含有名字、年龄、年级、家乡等信息,…

    2023年4月2日
    00
  • python入门基础(6)–语句基础(if语句、while语句)

    一、if语句 if 语句让你能够检查程序的当前状态,并据此采取相应的措施。if语句可应用于列表,以另一种方式处理列表中的大多数元素,以及特定值的元素1、简单示例 names=[‘xiaozhan’,’caiyilin’,’zhoushen’,’DAOlang’,’huangxiaoming’] for name in names: if name == ‘c…

    2023年4月2日
    00
  • django基础02–一个基于数据库的小项目

    摘要:简单修改、增加部分页面,了解django开发的过程。(Python 3.9.12,django 4.0.4 ) 接前篇,通过命令: django-admin startproject myWebSite 创立了新的站点,cd myWebSite进入到站点根目录,并用命令python manage.py runserver 8080(或其他端口号) 就可…

    2023年4月2日
    00
  • python入门基础(7)–字典及相关操作

    一、什么是字典 字典是Python中最强大的数据类型之一,也是Python语言中唯一的映射类型。映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表,字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。 字典类型与序列类型的区别:1.存取和访问数据的方式不同。2…

    2023年4月2日
    00
  • python数据可视化-matplotlib入门(7)-从网络加载数据及数据可视化的小总结

    除了从文件加载数据,另一个数据源是互联网,互联网每天产生各种不同的数据,可以用各种各样的方式从互联网加载数据。 一、了解 Web API Web 应用编程接口(API)自动请求网站的特定信息,再对这些信息进行可视化。每次运行,都会获取最新的数据来生成可视化,因此即便网络上的数据瞬息万变,它呈现的信息也都是最新的。 Web API是网站的一部分,用于与使用非常…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部