科学计算库Numpy(1)
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)的更多相关文章
- Python科学计算库Numpy
Python科学计算库Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 1.简 ...
- 科学计算库Numpy基础&提升(理解+重要函数讲解)
Intro 对于同样的数值计算任务,使用numpy比直接编写python代码实现 优点: 代码更简洁: numpy直接以数组.矩阵为粒度计算并且支持大量的数学函数,而python需要用for循环从底层 ...
- python科学计算库numpy和绘图库PIL的结合,素描图片(原创)
# 导入绘图库 from PIL import Image #导入科学计算库 import numpy as np #封装一个图像处理工具类 class TestNumpy(object): def ...
- [Python学习] python 科学计算库NumPy—矩阵运算
NumPy库的核心是矩阵及其运算. 使用array()函数可以将python的array_like数据转变成数组形式,使用matrix()函数转变成矩阵形式. 基于习惯,在实际使用中较常用array而 ...
- Python科学计算库-Numpy
NumPy 是 Python 语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,也是学习 python 必学的一个库. 1. 读取文件 numpy.gen ...
- 科学计算库Numpy——概述
Numpy主要用于数组的各种计算. 导入Numpy import numpy as np 数组类型 Numpy的数组类型为numpy.ndarray. array=np.array([1,2,3,4, ...
- 给统计人讲Python(1)_科学计算库-Numpy
本地代码是.ipynb格式的转换到博客上很麻烦,这里展示部分代码,了解更多可以查看我的git-hub:https://github.com/Yangami/Python-for-Statisticia ...
- 第03章 科学计算库Numpy
016.Numpy数据结构 关于矩阵运算的库 矩阵 017.Numpy基本操作 判断每一个元素的 018.Numpy矩阵属性 019.Numpy矩阵操作 020.Numpy常用函数 按列拼接就用 ...
- Python 科学计算库numpy
Numpy基础数据结构 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的元数 # 多维数组ndarray import numpy as np ar ...
随机推荐
- css--颜色值
首先,#000000格式的颜色被成为十六进制颜色码: 6位数分为三组,每两位数一组,依次是红.黄.蓝颜色的强度: #000000可以缩写为#000:黑色 其他类推
- 【Python】Part I 设置Python环境
01 设置Python环境 02 破解WingIDE (1)下载专业版wingide http://wingware.com/downloads/wing-pro/6.0.11-1/binaries& ...
- spring(AOP)静态代理
姓名:黄于霞 班级:软件151 1.定义抽象主题接口,假设需实现一个计算的类Math.完成加.减.乘.除功能,如下所示: 2.主题类,算术类,实现抽象接口. 3.代理类 4.测试运行 5.总 ...
- math-2人博弈
问题描述: 100根火柴,2人轮流取,每人每次只能取1-7根,取走最后一根火柴的人获胜.问有没有一种策略肯定能够获胜?该策略具体:先取or后取,怎么取? 思维过程: step1:题目问的很明显,所以肯 ...
- nginx常用模块
Nginx模块介绍 核心模块:core module 标准模块:stand modules HTTP modules: Standard HTTP modules Optional HTTP modu ...
- LeetCode 15. 3Sum 16. 3Sum Closest 18. 4Sum
n数求和,固定n-2个数,最后两个数在连续区间内一左一右根据当前求和与目标值比较移动,如果sum<target,移动较小数,否则,移动较大数 重复数处理: 使i为左至右第一个不重复数:while ...
- Python中的 *args 和 **kwargs
基本概念 Python支持可变参数,最简单的方法莫过于使用默认参数. def test_defargs(one, two=2): # 参数one没有默认值,two的默认值为2 print('Requi ...
- JAVA EE 的学习目标
本学期是大三下学期,是一个很关键的学习期.在这里定下一个短期的目标. 职业发展目标:我的职业目标其实不是计算机方向,我是准备考公.但是,作为第二手专业打算,如果考公务员失败,我根据我的性格来分析我会选 ...
- SpingMVC的工作流程
一.SpringMVC的主要组件 前端控制器(DisatcherServlet):接收请求,响应结果,返回可以是json,String等数据类型,也可以是页面(Model). 处理器映射器(Handl ...
- Error "java.lang.NoClassDefFoundError:org/openxmlformats/schemas/spreadsheetml/x2006/main/CTExtensionList" in SoapUI
After upgrade readyAPI 1.9 to the higher version, pop up error "java.lang.NoClassDefFoundError: ...