Numpy

一,数据结构

数据类型: ndarray

import numpy
world_alchol = numpy.genfromtxt('world_alchol.txt',delimiter=',',dtype=str)
print(type(world_alchol))
print(world_alchol)
print(help(numpy.genfromtxt))

创建一维的数组:

vector = numpy.array([5,10,15,20])

创建二维的数组:

matrix = numpy.array([[5,10,15,20],[15,20,25,30]])

查看数据的结构:

vector.shape        -------   (4,)    一行四列

matrix.shape        -------  (2,4)   两行四列

在numpy.array中的数据类型是限定的,必须是一种数据结构;

数字,string,浮点数等等...

通过索引获取数组的值,行和列的开始都是0开始;

vector[2,] 的值是15;

matrix[1,2] 的值是25;

想取数组的某一列;

matrix[:,2]  的值是15 ,25

如果取两列的话;

matrix[:,0:2]  的值是:array([[ 5, 10],[15, 20]])

判断一个值是否在,返回值是bool类型;

vector == 10 ;返回:array([False,  True, False, False])

matrix == 25;返回:array([[False, False, False, False], [False, False,  True, False]])

把bool类型的值当成索引返回当前的值;

print(equal_to_ten)   ----> [False  True False False]

print(vector[equal_to_ten])  ----> [10]  当成索引返回数组中的值;

second_column_25 = (matrix[:,2] == 25

print(second_column_25)    ----》   [False  True]  ; 有一行返回true ,说明这行有25的值;

print(matrix[second_column_25,:])    --》[[15 20 25 30]]  返回第二行数组; (second_column_25是行的索引)

二,矩阵常用操作;

b = np.arange(3)

print(b)

print(np.exp(b))

print(np.sqrt(b))  根号

a = np.floor(10*np.random.random((3,4)))

print(a)

正常情况下向量a.shape查看数据的结构,但是矩阵可以用a.revel()把值给拉平了(变成列表)向量;

print(a.ravel())

a.shape也可以进行其他的组合,变化数组的结构;

a.shape = (6,2)

a.shape = (1,12)

a.T也可以进行转置(行和列变化);

a.reshape(3,-1) 可以变成3行,n列; -1 代表不要计算取多少列的值,a.reshape(3,-1)可以直接计算;

矩阵拼接:

np.hstack(a,b) 可以进行横向数据拼接;np.vstack(a,b) 可以进行横向数据拼接;

a = np.floor(10*np.random.random((2,2)))    print(a)

b = np.floor(10*np.random.random((2,2)))    print(b)

print(np.hstack(a,b)) ; print(np.vstack(a,b))

矩阵切分:

np.hsplit(a,3) 把a矩阵切横向分成3份;但是也可以传入元组进行指定切分np.hsplit(a,(3,4)) 把切的元素单独分出 ;

a.np.floor(10*np.random.random((2,12)))    print(a)

print(np.hsplit(a,3))  ;  print(np.hsplit(a,(3,4)))

np.vsplit(a,3)  把矩阵a纵向切分成3份;

不同复制操作对比:

(1) a = np.arange(12)  ; b = a;  print(bi is a) ;  b.shape = 3,4  ; print(a.shape) ; print(a);print(b);

说明a和b的值是相等的;

(2) c = a.view() ; print(c is a); c.shape = 2,6 ; c[0,4] = 1234; print(a); print(id(a));print(id(c));

c是a的浅复制;c和a的id是并不相等的;他们公用了一套值;

(3) 即让他的id 不同,值也不同;

d = a.copy()  --- 深复制 ; d is a   ; d[0,0]=999 ; print(d) ; print(a) ;

数据索引

data = np.sin(np.arange(20)).reshape(5,4) ; print(data) ;

ind = data.argmax(axis=0)  -- axis按列算; 哪个列是最大的值;print(ind)返回的是索引值;

data_max = data[ind. range(data.shape[1])]  ;

print(data_max) ; 输出列最大值列表;

列扩展数据:

a = np.arange(0, 40, 10) ; print(a) ; b = np.tile(a , (3,5)) ; print(b)对列进行扩展;

对数组排序;

a = np.arrar([[4, 3, 5],[1, 2, 1]]) ; print(a) ; b = np.sort(a, axis=1) ; print(b) ;

a.sort(axis=1) ;print(a) ;   a = np.array([4,3,1,2]) ; j = np.argsort(a) 求索引 ; print(j) ; print(a[j])

科学计算库Numpy(1)的更多相关文章

  1. Python科学计算库Numpy

    Python科学计算库Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 1.简 ...

  2. 科学计算库Numpy基础&提升(理解+重要函数讲解)

    Intro 对于同样的数值计算任务,使用numpy比直接编写python代码实现 优点: 代码更简洁: numpy直接以数组.矩阵为粒度计算并且支持大量的数学函数,而python需要用for循环从底层 ...

  3. python科学计算库numpy和绘图库PIL的结合,素描图片(原创)

    # 导入绘图库 from PIL import Image #导入科学计算库 import numpy as np #封装一个图像处理工具类 class TestNumpy(object): def ...

  4. [Python学习] python 科学计算库NumPy—矩阵运算

    NumPy库的核心是矩阵及其运算. 使用array()函数可以将python的array_like数据转变成数组形式,使用matrix()函数转变成矩阵形式. 基于习惯,在实际使用中较常用array而 ...

  5. Python科学计算库-Numpy

    NumPy 是 Python 语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,也是学习 python 必学的一个库. 1. 读取文件 numpy.gen ...

  6. 科学计算库Numpy——概述

    Numpy主要用于数组的各种计算. 导入Numpy import numpy as np 数组类型 Numpy的数组类型为numpy.ndarray. array=np.array([1,2,3,4, ...

  7. 给统计人讲Python(1)_科学计算库-Numpy

    本地代码是.ipynb格式的转换到博客上很麻烦,这里展示部分代码,了解更多可以查看我的git-hub:https://github.com/Yangami/Python-for-Statisticia ...

  8. 第03章 科学计算库Numpy

    016.Numpy数据结构    关于矩阵运算的库 矩阵 017.Numpy基本操作 判断每一个元素的 018.Numpy矩阵属性 019.Numpy矩阵操作 020.Numpy常用函数 按列拼接就用 ...

  9. Python 科学计算库numpy

    Numpy基础数据结构 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的元数 # 多维数组ndarray import numpy as np ar ...

随机推荐

  1. (转)Jquery on()事件委派

    今天浏览jQuery的deprecated列表,发现live()和die()在里面了,赶紧看了一下,发现从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一 ...

  2. AJAX如何实现和后端的交互(网页如何与 web 服务器进行通信)

    在这里我们将会用一个姓名提示框案例来简单说明: 当用户在输入框中键入字符时,网页与 web 服务器进行通信,服务器返回提示信息,传给网页: 先看一下界面: 在html页面中: 思路:就是当用户在上面的 ...

  3. 20175212 《Java程序设计》第2周学习总结

    学号 20175212 <Java程序设计>第2周学习总结 教材学习内容总结 1.数据类型 此节介绍的数据类型与C中常用的相比仅多了Boolean(逻辑类型).byte(取值范围:[-12 ...

  4. oracle如何调试存储过程

    oracle如果存储过程比较复杂,我们要定位到错误就比较困难,那么可以存储过程的调试功能 先按简单的存储过程做个例子,就是上次做的存储过程(proc_test) 1.先在数据库的procedures文 ...

  5. 跟随我在oracle学习php(10)

    正则表达式 做验证 做匹配 用符号来描述书写规则:/ 中间写正则表达式 /^ :匹配开头,$:匹配结尾 : /^ve/以ve开头的 /ve$/以ve结尾\d:一个任意的数字\w:一个任意的数字或字母\ ...

  6. jquery validate 校验时,如果有type=hiddien

    当校验时,不需要校验#warnId,否则会引起输入框#alarmtile里的样式混乱

  7. 如何更有效地说服开发接收你的bug?!

    来来来,测试小伙伴们,看看以下这张图是不是觉得很熟悉.. 虽然这张图带点戏谑的成分,但确实折射出大部分IT公司测试人员在报bug时,与开发的沟通存在些许问题.如何更有效地说服开发接收你的bug,以下整 ...

  8. L1-060 心理阴影面积

    这是一幅心理阴影面积图.我们都以为自己可以匀速前进(图中蓝色直线),而拖延症晚期的我们往往执行的是最后时刻的疯狂赶工(图中的红色折线).由红.蓝线围出的面积,就是我们在做作业时的心理阴影面积. 现给出 ...

  9. DevExpress v18.2新版亮点——DevExtreme篇(四)

    行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExtreme Complete Sub ...

  10. Struts2中Action之ResultType

    我们在struts-defalut.xml文件中可以看到如下图所示: 这些类型是配置文件所带的.接下来我们主要讲解我标注出来的这个,其他的我就不做详解了,有兴趣的可以去试试. web.xml文件我在这 ...