基于Python的大数据分析基础(一)---- NumPy_基于python numpy_郑德帅的博客-程序员秘密

技术标签: 数据分析  大数据基础  Python大数据  大数据  Python 大数据基础  Python  

 

1.NumPy简介及其使用

  • NumPy是一个功能强大的Python库,主要用于对多维数组执行计算,允许更高级的数据操作和数学计算。 它包括数学、逻辑、数组形状变换、排序、选择、I/O 、离散傅立叶变换、基本线性代数、基本统计运算、随机模拟等等。
    • 机器学习模型:在编写机器学习算法时,需要对矩阵进行各种数值计算。例如矩阵乘法、换位、加法等。NumPy提供了一个非常好的库,用于简单(在编写代码方面)和快速(在速度方面)计算。NumPy数组用于存储训练数据和机器学习模型的参数。
    • 图像处理和计算机图形学:计算机中的图像表示为多维数字数组。NumPy成为同样情况下最自然的选择。实际上,NumPy提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。
    • 数学任务:NumPy对于执行各种数学任务非常有用,如数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于Python的MATLAB的快速替代。
  • Numpy安装:在shell上使用以下命令:pip install numpy

2.Numpy基础知识

  • NumPy的数组类被称为ndarray。别名为 array。 请注意,numpy.array 与标准Python库类 array.array 不同,后者仅处理一维数组并提供较少的功能。 ndarray 对象则提供更关键的属性:
    • ndarray.ndim:数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。
    • ndarray.shape:数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有n行和m列的矩阵,shape将是(n,m)。因此,shape元组的长度就是rank或维度的个数 ndim
    • ndarray.size:数组元素的总数。这等于shape的元素的乘积。
    • ndarray.dtype:一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。
    • ndarray.itemsize:数组中每个元素的字节大小。例如,元素为 float64 类型的数组的 itemsize 为8(=64/8),而 complex32 类型的数组的 itemsize 为4(=32/8)。它等于 ndarray.dtype.itemsize 。
    • ndarray.data:该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。

3.NumPy的使用及其方法

# -*- coding: utf-8 -*-
"""
Author :        Jason
"""
__author__ = 'Jason'
'''
NumPy是Python的一个用于科学计算的基础包,属于Python的第三方库。
NumPy包的核心是ndarray对象。它封装了n维同类数组,特别注意这里的数组必须是同类型。
个人理解: 结合现代中的矩阵最好理解了
使用前先安装 pip3 install numpy
'''
import numpy as np 
data1 = [1,2,3,4,5]
array1 = np.array(data1)
print(type(array1),"\n",array1)
'''
<class 'numpy.ndarray'> 
 [1 2 3 4 5]
'''

data2 = [[1,2,3],[4,5,6]]
array2 = np.array(data2)
print(array2)
'''
[[1 2 3]
 [4 5 6]]
'''

#查询内部元素类型
print(array1.dtype)                 # int32
print(array2.dtype)                 # int32

#转换数据类型
print(array1.astype("str"))       # ['1' '2' '3' '4' '5']
print(array1.astype("str").dtype) # <U11

#数组的运算
print(array1 + 1)       # [2 3 4 5 6]
print(array1 * 2)       # [ 2  4  6  8 10]
print(array1 * array1)  # [ 1  4  9 16 25]
print(array1 / 5)       #[0.2 0.4 0.6 0.8 1. ]

#array数组的访问方式和Python列表的访问方式相同,下标索引切片等
print(array1[3])        # 4
print(array1[0:2])      # [1 2]
print(array1[:2])       # [1 2]
print(array1[-2:])      # [4 5]

#矩阵元素的个数
print(array1.size)  # 5
print(array1.itemsize) #一个元素的长度(以字节为单位)


#NumPy自带函数创建ndarray数组
data1 = np.ones(4)           # 自带函数ones(参数一维个数)
data2 = np.zeros(4)          # 自带函数zeros(参数一维个数)
data3 = np.random.random(4)  # 自带函数random.random(参数一维个数)
print("data1,data2,data3:",data1,data2,data3)
data4 = np.full(3,4)         # [4 4 4]
print(data4)                 # 创建一个长度为3,元素全为4的数组
data5 = np.eye(4)            # 创建一个正方形4*5单位矩阵,对角线为1,其余为0
print(data5)
data6 = np.linspace(0,10,3)	             ##第一个值为起始值,第二个值为结束值,第三个值为元素个数
print(data6)                             #[0 5 10]
data7 = np.linspace((10,10,10),(0,0,0),3)#第一个值为起始值,第二个值为结束值,第三个值为元素个数,这里把一维数组看作一个元素比较好理解
print(data7)
'''
[[10. 10. 10.]
 [ 5.  5.  5.]
 [ 0.  0.  0.]]
'''

#数组维度变换
'''
np.reshape(shape)	不改变数组元素,返回一个shape形状的数组,原数组不变
np.resize(shape)	同上,但是是修改了原数组
np.swapaxes(ar1,ar2)	将数组n各维度中的两个维度进行调换
np.flatten()	对数组降维,返回一维数组,原数组不变
'''

#获取平均值mean(),最大值max(),最小值min(),和sum()
print(array1.mean()) #3
print(array1.min())  #1
print(array1.max())  #5
print(array1.sum())  #15

参照:《基于Python的大数据分析基础及实战》

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36853469/article/details/102847878

智能推荐

Go 1.15中值得关注的几个变化 | Gopher Daily (2020.10.11) ʕ◔ϖ◔ʔ_Tony Bai的博客-程序员秘密

每日一谚:The loose organization of packages lets us write and refactor code quickly.•Go专栏:《改善Go语言...

完美卸载SQL Server 2008 R2 的方法,适合所有问题_10先生的博客-程序员秘密

 最近遇到了一件烦心事,在安装SQL Server 2008 R2总是在Analysis Services选项那里出现错误,安装了一整天也没好,真的是按了又卸载,之后在按,为此我很苦恼,经过百度查询,终于找到本文,也自己写了也教程,在这里提前说明一下,小编电脑是Win7系统。下面让我们进入今天的话题——如何完美卸载SQL Server 2008 R2。  一、卸载SQL Server 2008 ...

mapreduce之自定义排序算法_Garry1115的博客-程序员秘密

有人说mapreduce中不是有一个自动排序和分组(按key排序和分组)的嘛,我们为什么还需要自己写排序算法呢?因为很多时候这种自动排序无法满足我们的需求,所以我们需要自定义排序算法!需求1:#首先按照第一列升序排列,当第一列相同时,第二列升序排列3 33 23 12 22 11 1----结果---------------1 12 12 2

Codeforces Round #399:D. Jon and Orbs_Jaihk662的博客-程序员秘密

D. Jon and Orbstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputJon Snow is on the lookout for some orbs re

js获取数组中最大最小值及对应索引值(下标)_js求数组最小值及其下标_明天不上班9的博客-程序员秘密

1.使用原生Js实现该功能,主要是通过循环实现getMaxMin = (data, key) =&gt; { if (!data) { return false } let maxIndex = 0 let minIndex = 0 let maxNum = data[0][key] || 0 let minNum = (data[0][key] &amp;&amp; data[0][key] !== 0) ? Infinity : data

随便推点

第十四届蓝桥杯三月真题刷题训练——第 3 天_小羊不会飞的博客-程序员秘密

目录题目1:门牌制作题目描述运行限制代码:题目2:货物摆放_long题目描述答案提交运行限制代码:题目3:跳跃_dp题目描述输入描述输出描述输入输出样例运行限制代码:题目4:重新排序_差分数组问题描述输入格式输出格式样例输入样例输出样例说明评测用例规模与约定运行限制代码:

Inno Setup的使用笔记_regquerydwordvalue_纹路猫的博客-程序员秘密

项目需要,前些天学习了Inno Setup这跨打包工具的使用方法,收获蛮多的。由于之前也没有打包过,一时间学起来非常吃力。vs自带有打包的程序,但是自己也都从来没有用过,不知道强大不强大,反正目前就觉得Inno Setup挺不错的。听说什么酷狗啊,QQ啊,金山啊这种大牛都是用这个打包的。吃惊!界面美化这块没有做,如果以后有时间,可以再去看看,反正现在不想看了,也都挺郁闷的。

asp.net2.0学习历程 菜鸟到中级程序员的飞跃_weixin_30813225的博客-程序员秘密

202.96.128.16661.144.56.100四.提高19.《ASP.NET2.0XML高级编程(第3版)》XML数据提高点评:好书,小黑写的很好,涵盖了XML在asp.net下的方方面面,遇到不明白的要多读几遍。讲XML的书不多,不过有这本也就够了。20.《Ajax实战》Ajax实战应用点评:好书,2006年是中国出版界的Ajax年,感觉同系列(另2本是《Ajax基础教程》《Aj...

Scala笔记整理(四):Scala面向对象—类详解2(继承相关)_weixin_34342207的博客-程序员秘密

[TOC]单例希望某个类只存在一个使用的对象,而不管有多少个调用者在使用它,就是单例的概念。Java中的单例package cn.xpleaf.single;/** * 单例模式-饿汉式(在属性中先创建好对象,不管是否调用getInstance方法) * @author yeyonghao * */public class User { private static ...

vue-axios封装get方法和post方法_imHere·的博客-程序员秘密

/** * get方法,对应get请求 * @param {String} url [请求的url地址] * @param {Object} params [请求时携带的参数] */export function get(url, params){ return new Promise((resolve, reject) =&gt;{ axios.get(url...

别说我不会玩,我来告诉你iPhone有多烂!iPhone缺点集_weixin_30484739的博客-程序员秘密

港行iPhone4S入手,帮朋友整的。朋友经常出国,所以指定要越狱,装墙外软件。大sim卡是不支持的,还好商家给了剪卡器。首先发现移动卡不支持,别告诉我欢迎门,我用的就是19位的ICCID,反正把卡装进去就是No Service,然后去营业厅换了一张,客服帮剪,还是不行。花了好几十没有搞定,回来只能用联通。说说信号,联通本来信号就很一般,装到iPhone里简直弱爆了,和我的MB865的...

推荐文章

热门文章

相关标签