Python数据分析与展示(一):Numpy库入门-NdArray的生成,属性,方法,转换等_温别Serein的博客-程序员秘密

技术标签: python  python机器学习  numpy  

一、Numpy库简介

NumPy是使用Python进行科学计算的一个基本库,其中机器学习的大部分算法都是调用该库实现。 主要包括以下功能:

  1. 一个强大的N维数组对象Array;
  2. 用于集成C / C ++和Fortran代码的工具;
  3. 实用的线性代数、傅里叶变换和随机数生成函数。

相对于python自带的计算和存储方式而言,Numpy的方法效率更高,占用空间更小,是一个非常好的工具包。

 

二、Numpy生成Ndarray 对象的方法

1. np.array(list/tuple,dtype=np.float):生成指定的列表或者元组

a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])

2.np.arange(n,dtype):生成0-n-1个数,类型默认为整数

a=np.arange(20)
————————————————————————result——————————————————————————————————————————————
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19])

3.np.ones((n,m)):生成n行m列的全为1的矩阵

np.ones((4,3))
————————————————————————result——————————————————————————————————————————————
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])

4.np.zeros((n,m)):生成n行m列的全为0的矩阵

np.zeros((3,3))
————————————————————————result——————————————————————————————————————————————
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])

5.np.eye(n):生成n行n列对角线为1的矩阵

np.eye(5)
————————————————————————result——————————————————————————————————————————————
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

6.根据原来array对象,改变值,重新生成一个array对象

a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])

np.ones_like(a)         #根据原来array对象,重新生成一个全为1的array对象
————————————————————————result——————————————————————————————————————————————
array([[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1]])


np.zeros_like(a)        #根据原来array对象,重新生成一个全为0的array对象
————————————————————————result——————————————————————————————————————————————
array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])


np.full_like(a,3)       #根据原来array对象,重新生成一个全为的array对象
————————————————————————result——————————————————————————————————————————————
array([[3, 3, 3, 3, 3],
       [3, 3, 3, 3, 3]])

7.np.linspace(a,b,n,endpoint=True/False):生成等间距的n个元素,起始位置为a,结束位置为b,endpoint代表是否取到最后一位。生成的默认为浮点数。

a=np.linspace(1,10,4)
————————————————————————result——————————————————————————————————————————————
array([ 1.,  4.,  7., 10.])

b=np.linspace(1,10,4,endpoint=False)
————————————————————————result——————————————————————————————————————————————
array([1.  , 3.25, 5.5 , 7.75])

c=np.concatenate((a,b))
c
————————————————————————result——————————————————————————————————————————————
array([ 1.  ,  4.  ,  7.  , 10.  ,  1.  ,  3.25,  5.5 ,  7.75])

补充:array对象的几个属性

a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
print(a.ndim)      #维度数
print(a.shape)     #对象尺度(矩阵为几行几列)
print(a.size)      #元素个数
print(a.dtype)     #元素类型
print(a.itemsize)  #对象大小,以字节为单位
————————————————————————result——————————————————————————————————————————————
2       
(2, 5)
10
int32
4

二、Ndarray 对象的一些变换

1.reshape方法:不改变原对象,会重新生成一个对象,改变前后的元素数必须一致

2.resize方法:改变源对象

3.flatten方法:将对象降为一维

4.np.astype方法,可将对象中的所有元素类型进行转换,转换后生成一个新对象,原来的保持不变

5.array.tolist()方法,将array对象转换为python原生的list。list相对而言运算速度较慢,且占用空间较大,但在对接原生python程序中,这个方法还是很有用的

三、Ndarray 对象的操作

1.一维的array对象

(1)索引:同列列表

(2)切片

         基本方式a[m:n:s],m是起始位置,n是结束位置(取不到),s是步长

2.多维的array对象

(1)索引:如下

一般形式

       

负数形式:-1代表最后一个,以此类推

(2)切片

思路:第一个维度随意,第二个维度要求是1,第三个维度要求是-3

思路:第一个维度随意,第二个维度要求从1和2,第三个维度随意

思路:第一和第二维度随意,第三维度要求步长为2

 

四、Ndarray 对象的运算

1.数组与标量之间的运算时,会每个元素除以该标量。以每个数除以平均值为例:

2.基本一元函数(同理,都是每个元素的运算,运算后原数组并不改变)

3.二元函数(两个array之间的运算)

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

智能推荐

5分钟看穿人心_欣莎之家的博客-程序员秘密

1. 市场  市面上对于人际沟通的图书已经有了一定的接受度,人们也越来越多地意识到良好的沟通技巧对于职场生存和日常生活的重要性和必要性。  2. 内容  人际交往的技巧很微妙,人们也越来越重视对这方面知识的获取,越来越希望建立更好的人际关系网络,这本书正好契合了大部分人的心理需求。  3. 易读实用  本书是一本趣味性很强的读本,书中用的全是易读易懂的生活案例。读者可以随时随地

android webview 页面加载拦截_webview 如何停止加载某个网页_2012yayang的博客-程序员秘密

android开发中,有时候会用到webview来显示。在webview页面中,若有这样的需求:拦截某个地址,并让其停止加载,只要用stopLoading就可以解决:package com.lianxi.adapter;import java.util.List;import android.app.Activity;import android.app.ProgressDialog...

人工智能、机器学习和模式识别以及神经网络_模式识别和神经网络的区别_~~Jerry~~的博客-程序员秘密

梯度下降的定义梯度下降问题就是沿着导数下降的地方移动,直到某点梯度最小,这个时候就达到了最优解多变量的梯度下降问题神经网络中遇到的问题是多变量的最优解,即多变量的梯度为零的解局部最优和全局最优问题通常,我们求得的最优解不一定是全局最优解,其可能只是局部最优解。...

QDateEidt 设置时间_没用的阿_吉的博客-程序员秘密

ui->startDateEdit->setDisplayFormat("yyyy-MM-dd"); ui->endDateEdit->setDisplayFormat("yyyy-MM-dd"); //mor QDate current_date =QDate::currentDate(); ui->startDateEdit-&gt...

java 文件拒绝访问_Java解决java.io.FileNotFoundException: E:\work\work (拒绝访问。)_温暖如故的博客-程序员秘密

一、问题在使用FileInputStream或FileOutputStream时会遇到如下问题1和问题2。问题1:java.io.FileNotFoundException: .\xxx\xxx.txt (系统找不到指定的路径。)at java.io.FileOutputStream.open(Native Method)at java.io.FileOutputStream.(Unknown S...

CSS命名规范--BEM_css命名规范-bem_咦_我是长颈鹿的博客-程序员秘密

BEM基于组件方式的web开发方法,基本思想是将用户界面分成独立的模块。Block(块)(通常指模块,组件) Block 是一个逻辑上和功能上独立的页面组件,等同于网页组件中的部件(等同于网页中的组件)。Block 封装了行为(Javascript)、模板、样式(CSS)和其他实现技术。独立状态的 Block 可供复用,并且促进项目开发和维护。内容模块名称:描述...

随便推点

mac 下80端口冲突解决_前端服务和nginx监控端口冲突_忆杰的博客-程序员秘密

 #今天启动nginx的时候,发现80端口被占用,用ps -ef | grep nginx和lsof -i:80都找不到,后来上网搜索后发现是apache的问题,是因为系统自带的apache启动了所以占用了ngxin80端口,解决方案是执行下面的代码。# 停止apachectl$ sudo apachectl stop# 杀死已启动的nginx进程$ ps aux | grep ng...

JAVA中Long值判断是否相等_felix的博客-程序员秘密

程序中有段代码以前运行正常,JDK升级到1.8以后发现数据不显示,debug后发下下面语句运行不对:if (parentMenu.getMenuId() == childMenu.getParentId())改成下面这样才能正确运行:if (parentMenu.getMenuId().equals(childMenu.getParentId()))原因是数据为Long型,跟String一样得用e...

7-14 最短路 (25 分)(BFS)_Rain Sure的博客-程序员秘密

小明同学来到西安工业大学后,听说了计算机学院有红细胞和网安两个协会,但是它们的招新比赛时间冲突了,小明同学只能选择一个去参加。小明同学开始的位置在图书馆(图中左上角且固定不变),由于小明同学不想多走路,所以他决定去距离自己最近的比赛地点。题目保证最短路径距离唯一且距离最近的协会一定存在通路。图书馆:字母'L'表示 红细胞: 字母'R'表示 网安:字母'S'表示 障碍物:字母'X'表示 可以走的路:字母'O'表示其中‘L’,‘R’,‘S’,‘O’均为可以走的路。图示红色为一条长度为7的最短路。

BottomNavicationView 中图标不改变的问题_奋斗的IT小民工的博客-程序员秘密

BottomNavigationView实现底部导航栏1. 引入方法 implementation 'com.android.support:design:26.+'2. 常见的属性 XML attributes 用法 Cool itemBackground 底部导航栏的背景颜色 itemIconTint 图标==选中==/==...

H5PY读取.mat文件报错_GZKPeng的博客-程序员秘密

OSError: Unable to open file (file signature not found)用matlab保存的文件,用h5py读取的时候出现了上述错误。def load_feature(features_path, name_str): print 'BasicDataProvider: reading %s' % (features_path, ) featu...

Django + nginx + uwsgi配置和环境搭建(ubuntu)_tianxingzheaa的博客-程序员秘密

Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求。nginx把所有静态请求自己来处理(这是NGINX的强项)。然后,NGINX将所有非静态请求通过uwsgi传递给Django,由Django来进行处理,从而完成一次WEB请求。uwsgi官网:http:/

推荐文章

热门文章

相关标签