科学技术库Numpy
一、生成矩形操作
1)numpy获取的数据是以 “,” 为分割的数据结构,来生成矩阵
注意:skip_header=1 去掉行首,即说明行
,Cao jin,,,python,--
,张二毛,,,IT,--
,三,,,python,--
,张大三,,,python,--
,二毛,,,运维,--
1.txt
import numpy
a = numpy.genfromtxt("1.txt",encoding='utf-8',delimiter=",",dtype=str)
print(type(a)) # 查看类型
print(a) # 查看获取到的文档
print(help(numpy.genfromtxt)) # 查看该函数的帮助
获取数据.py
获得的结果
<class 'numpy.ndarray'>
[['' 'Cao jin' '' '' 'python' '2015-11-01']
['' '张二毛' '' '' 'IT' '2013-11-01']
['' '三' '' '' 'python' '2015-11-01']
['' '张大三' '' '' 'python' '2015-11-01']
['' '二毛' '' '' '运维' '2013-11-01']]
2)单独取值的操作
import numpy
a = numpy.genfromtxt("1.txt",encoding='utf-8',delimiter=",",dtype=str,skip_header=) # skip_header= 去掉说明行
print(a)
print(a[,]) # 获取到第二行的,第6个值
2)列表生成矩阵
import numpy
verctor = numpy.array([,,,]) # 矩阵操作
print("==>verctor",verctor)
matrix = numpy.array([[,,],[,,],[,,]]) # 矩阵操作
print("==>matrix",matrix)
==>verctor [ ]
==>matrix [[ ]
[ ]
[ ]]
3)获取到行列数
import numpy
verctor = numpy.array([,,,]) # 特殊的行
print(verctor.shape) # (,)
matrix = numpy.array([[,,],[,,]])
print(matrix.shape) # (, ) 意思是2行,每行3个元素,即2行3列
print(matrix.ndim) # 2行3列,所以2个维度
print(matrix.size) # 个元素
print(matrix.dtype.name) # int32 类型
4)对生成的矩阵数必须统一,如果有一个不是相应的类型,都将发生改变
import numpy
verctor = numpy.array([,,,4.0])
print(verctor)
print(verctor.dtype)
本来大都是int型,只因为传入了一个float行,都变成了float行
[. . . .]
float64
5)矩阵灵活的切片操作
import numpy
vector = numpy.array([,,,])
print(vector[:]) # [ ] # 顾头不顾尾
matrix = numpy.array([[,,],[,,],[,,]])
print(matrix)
print(matrix[:,]) # [ ] 获取到每行的第3个元素,相当与获取到第三列
print(matrix[:,]) #[ ] # 获取到的是这个列表的第1到最后的元素
print(matrix[:,]) #[ ] # 获取到的是这个列表的第0到第1个元素
print(matrix[:,:]) # 获取到每行的前2列元素
二、矩阵的基本操作
1)判断矩阵里面的每一个值
import numpy
vector = numpy.array([,,,])
print(vector == ) # 判断里面的每一个值是否等于10
matrix = numpy.array([[,,],[,,],[,,]])
a = matrix == # 判断里面的每一个值是否等于10
print(a,type(a))
2)根据判断值,来进行获取值的操作
import numpy
vector = numpy.array([,,,])
equal_to_ten = (vector == )
print(equal_to_ten)
print(vector[equal_to_ten]) # 取出值为10的 matrix = numpy.array([[,,],[,,],[,,]])
second_column_25 = (matrix[:,] == ) # 先找到有15的那一行
print(second_column_25)
print(matrix[second_column_25])
a = matrix[second_column_25]
b = (a == ) # 获取到15的值
print(a[b])
3)&符号和 |
import numpy
vector = numpy.array([,,,])
equal_five_and_ten = (vector == ) & (vector == ) # 不可能存在
print(equal_five_and_ten) vector2 = numpy.array([,,,])
equal_five_or_ten = (vector2 == ) | (vector2 == )
print(equal_five_or_ten)
4)更改矩阵的值
import numpy
vector = numpy.array([,,,])
equal_five_or_ten = (vector == ) | (vector == )
vector[equal_five_or_ten] =
print(vector)
5)类型的转换
import numpy
vector = numpy.array(["","",""])
print(vector.dtype)
print(vector)
vector = vector.astype(float)
print(vector.dtype)
print(vector)
vector = vector.astype(int)
print(vector)
print(vector.dtype)
6)取最小值,最大值,每行的和,及每列的和
import numpy
matrix = numpy.array([[,,],[,,],[,,]])
print(matrix)
print(matrix.min())
print(matrix.max())
# 按照行操作axis= ,按照列操作axis=
print(matrix.min(axis=)) # 计算每一行的最小值
print(matrix.sum(axis=)) # 计算每一行的和
print(matrix.sum(axis=)) # 计算每一列的和
7)平分数列
import numpy as np
print(np.arange())
a = np.arange().reshape(,) # 等分成3行5列
print(a)
print(a.shape)
print(a.ndim) # 因为是3行5列,所以维度为2。。
print(a.size) # 计算有多少元素
print(a.dtype.name) # int32 类型
8)初始化数据操作
import numpy as np
a = np.zeros((,)) # 初始化操作,默认元素为0,且为float
print(a) b = np.ones((,,),dtype=np.int32)
print(b) c = np.arange(,,)
print(c) # [ ]
9).random随机数
import numpy as np
a = np.random.random((,))
print(a)
# [[0.27278308 0.53345672 0.83729457]
# [0.4760841 0.18489101 0.16778119]]
10)在起始值随机取数
import numpy as np
from numpy import pi
a = np.linspace(,*pi,) # 在起始值之间平均的找到这些数
print(a) b = np.sin(np.linspace(,,))
print(b)
11)矩阵之间的加减乘除
import numpy as np
a = np.array([,,,])
b = np.arange()
print(a)
print(b)
c = a - b
print(c)
print(a*b)
c = c -
print(c)
print(b**)
print(a<)
12)矩阵的混合运算
import numpy as np
A = np.array([[,],[,]])
B = np.array([[,],[,]])
print(A)
print(B)
print("****************")
print(A*B)
print("dot dot dot dot")
print(A.dot(B)) # 或 print(np.dot(A,B))
# ==>*+ ==> *+ ===> *+ ===> *+
# [[ ]
# [ ]]
三、矩阵的基本函数
1)e次方计算,根号计算
import numpy as np
B = np.arange()
print(B)
print(np.exp(B)) # 返回的是e的多少次方,e = 2.71828
print(np.sqrt(B)) # 开根号
2)矩阵的复制操作
使用 “=” 复制,完全一样。id也一样。深复制
import numpy as np a = np.arange()
b = a # 在矩阵中,b和a 指向同一个内存地址,犹如创建了一个快捷方式
print(b is a)
print(b)
b.shape = ,
print(a.shape)
print(id(a))
print(id(b))
使用“a.view()” 复制,浅复制,共用数据。在修改数据的时候,相应的都会发生变化
import numpy as np a = np.arange()
c = a.view() # 浅复制。公用数据
print(a)
print(c)
print(c is a)
c.shape = ,
print(a)
print('#######')
c[,] = # 对某一个元素的修改,会影响到原来的元素
print(c)
print('#######')
print(a)
使用“a.copy()” 复制,完全将数据复制了一份。复制的数据和之前的数据已经脱离了关系。推荐使用
import numpy as np a = np.arange()
d = a.copy()
print(d is a)
d[] =
print(d)
print(a)
3)矩阵的常用方法
import numpy as np b = np.random.random((,))
print(b)
print('********')
a = np.floor(b*) # floor 向下的取整
print(a)
print('-----------')
print(a.ravel()) # ravel 把一个矩阵撑长
print('============')
a.shape = (,) # 变成了6行2列的矩阵
print(a)
print('$$$$$$$')
print(a.T) # 行列对换,变成了2行6列
矩阵之间的合并操作
import numpy as np a = np.floor(*np.random.random((,)))
b = np.floor(*np.random.random((,)))
print(a)
print('-----------')
print(b)
print('===========')
print(np.vstack((a,b))) # 同样的特征合并操作
print('***********')
print(np.hstack((a,b))) # 不同的特殊合并操作
切割矩阵,按行切,按列切
import numpy as np a = np.floor(*np.random.random((,)))
print(a)
print('-----------')
print(np.hsplit(a,)) # 平均按列切3刀,分成3份array
print(np.hsplit(a,(,))) # 在3和4 这个位置按列分别切一刀
b = np.floor(*np.random.random((,)))
print(b)
print(np.vsplit(b,)) # 平均按行切3刀,分成3份array
寻找最大值
import numpy as np
date = np.sin(np.arange()).reshape(,)
print(date)
print("==============")
ind = date.argmax(axis = ) # 按列寻找,寻找到最大数的 id 号
print(ind)
print("==============")
date_max = date[ind,range(date.shape[])] # 根据列,找到id号对应的最大值
print(date_max)
把一维矩阵复制成多份
import numpy as np
a = np.arange(,,)
print(a)
b = np.tile(a,(,)) # 把a 元素复制成2行2列
print(b)
排序,值的大小排序,值的索引值进行排序
import numpy as np
a = np.array([[,,],[,,]])
print(a)
b = np.sort(a,axis=) # 排序
print(b)
print("=========")
a = np.array([,,,])
j = np.argsort(a) # 根据索引值的大小进行排序
print(j)
四、总结
a = numpy.genfromtxt("1.txt",encoding='utf-8',delimiter=",",dtype=str) # 从文件解析陈矩阵
a = numpy.genfromtxt("1.txt",encoding='utf-8',delimiter=",",dtype=str,skip_header=) # skip_header= 去掉第一行,说明行
matrix = numpy.array([[,,],[,,],[,,]]) # 列表矩阵操作
matrix.shape # 获取到矩阵的行列数
print(matrix[:,]) # 切片操作
===============================
vector = numpy.array([,,,])
equal_to_ten = (vector == )
print(vector[equal_to_ten]) # 取值操作
vector.min() # 取最小值
vector = numpy.array(["","",""])
vector = vector.astype(float) # 类型转换
np.arange().reshape(,) # 等分成3行5列
print(a.shape)
np.arange(,,) # 初始化数据
floor 向下的取整
ravel 把一个矩阵撑长
a.shape = (,) # 变成了6行2列的矩阵
a.T # 行列对换,变成了2行6列
np.vstack((a,b)) # 同样的特征合并操作
np.hstack((a,b)) # 不同的特殊合并操作
np.hsplit(a,) # 平均按列切3刀,分成3份array
np.hsplit(a,(,)) # 在3和4 这个位置按列分别切一刀
np.vsplit(b,)) # 平均按行切3刀,分成3份array
b = a # 矩阵中,a 和 b 完全一样,共用内存地址
c = a.view() # 不推荐使用,浅复制。共用数据。只在修改数据的时候发生了变化
d = a.copy() # 推荐使用,复制了,原来的数据和现在的数据已经没有关系了
date.argmax(axis = ) # 按列寻找,寻找到最大数的 id 号
date[ind,range(date.shape[])] # 根据列,找到id号对应的最大值
np.tile(a,(,)) # 把a 元素复制成2行2列
np.sort(a,axis=) # 按行排序
np.sort(a,axis=) # 值的大小排序
np.argsort(a) # 根据索引值的大小进行排序
科学技术库Numpy的更多相关文章
- Python科学计算—numpy模块总结(1)
作为一个本科学数学专业,目前研究非线性物理领域的研究僧.用什么软件进行纯科学计算好,Fortran永远是第一位的:matlab虽然很强大,可以很容易的处理大量的大矩阵,但是求解我们的模型(有时可能是几 ...
- 科学计算 NumPy 与C语言对比 N-dimensional array ndarray 元素元素操作 计算正太分布分位数
w http://www.numpy.org/ NumPy is the fundamental package for scientific computing with Python. It co ...
- Python的工具包[0] -> numpy科学计算 -> numpy 库及使用总结
NumPy 目录 关于 numpy numpy 库 numpy 基本操作 numpy 复制操作 numpy 计算 numpy 常用函数 1 关于numpy / About numpy NumPy系统是 ...
- [python]-数据科学库Numpy学习
一.Numpy简介: Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3 ...
- Python 数据科学系列 の Numpy、Series 和 DataFrame介绍
本課主題 Numpy 的介绍和操作实战 Series 的介绍和操作实战 DataFrame 的介绍和操作实战 Numpy 的介绍和操作实战 numpy 是 Python 在数据计算领域里很常用的模块 ...
- 数据科学:numpy.where() 的用法
原文出处:numpy.where() 用法讲解 原创作者:massquantity numpy.where() 有两种用法: 1. np.where(condition, x, y) 满足条件(con ...
- Python数据科学手册-Numpy的结构化数组
结构化数组 和 记录数组 为复合的.异构的数据提供了非常有效的存储 (一般使用pandas 的 DataFrame来实现) 传入的dtpye 使用 Numpy数据类型 Character Descri ...
- Python数据科学手册-Numpy数组的排序
1) Numpy中的快速排序: np.sort 和 np.argsort np.sort 是快速排序,算法复杂度 O[ N log N] ,也可以选择归并排序和堆排序 如果不想修改原始输入数组,返 ...
- Python数据科学手册-Numpy数组的计算:比较、掩码和布尔逻辑,花哨的索引
Numpy的通用函数可以用来替代循环, 快速实现数组的逐元素的 运算 同样,使用其他通用函数实现数组的逐元素的 比较 < > 这些运算结果 是一个布尔数据类型的数组. 有6种标准的比较操作 ...
随机推荐
- linux安装redis及主从复制、读写分离、哨兵模式
Redis安装与部署 版本最好选择3.0及以上.以后还可以部署Redis集群. 1.下载: [root@bogon redis-3.0.0]# cd /usr/local [root@bogon lo ...
- CentOS 查找某个软件安装路径
1.通过rpm查看 查看软件是否安装.首先我们需要查看软件是否已经安装,或者说查看安装的软件包名称.如查找是否安装mysql 2.接着根据 rpm -ql 列出软件包安装的文件 3.综合上述以上的问题 ...
- java 对一个字符串去重,即去掉字符串内重复元素
String str ="abc|efa|abc|efa|abc"; String str1 = str.replaceAll("(?s)(.)(?=.*\\1)&quo ...
- CardView 卡片布局
转自:https://www.baidu.com/link?url=WwHvfX3PB_egfQ6GFwxsDeq4NDzB2AW-zaTzskkNXs0qWnIcHyh3pN3Oqe6YO1lAmV ...
- Lua入门教程
什么是Lua Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Rober ...
- 关于gcc、make和CMake的区别
CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要 ...
- 20165315 预备作业3 Linux安装及学习
20165315 预备作业3 Linux安装及学习 一.在自己笔记本上安装Linux操作系统 因为对操作电脑的不熟悉,我在第一项任务上就花费了一定的时间,在安装过程有如下问题: 我的电脑是苹果公司的M ...
- Java_1简介
1.Java版本 JavaSE 基础标准版 J2ME 小型版 JavaEE 企业版(主要针对Javaweb程序进行开发) 2.Java特点 开源跨平台 跨平台的原因:Java必须先只能装 ...
- php7下安装event扩展
有效安排I/O,时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施的libevent端口. 下载地址:http://pecl.php.net/package/event ...
- 从mysql导入及导出csv
csv导入: load data local infile 'D:/pcode/shu/data/a.csv' into table a fields terminated by ','; csv导出 ...