2.python科学计算库numpy(学习笔记)

1.numpy打开数据方法
定位到数据(习惯把代码和数据放在同一文件夹下,即不用指定绝对路径)

import numpy as np
world_alcohol = numpy.genfromtxt("world_alcohol.txt", delimiter=",",dtype=str) #此处genfromtxt函数用于阅读数据,参数1表示数据名称,参数2表述数据之间的分隔符号用于分隔数据,参数3指的是读入数据的格式
print(type(world_alcohol)) #查看数据结构
print(world_alcohol)#打印数据
print(help(numpy.genfromtxt))#打印帮助文档

2.numpy.array()的用法(备注:传入的值必须是相同的结构)

vector = numpy.array([5,10,15,20])#构造list,一维
matrix = numpy.array([[5,10,15],[20,23,30],[32,34,35]])
print vector
print matrix
print(vector.shape) #观察结果的shape
print(matrix.shape)#在检查中间输出结果的时候,可以用debug

3.数据的选取(数据编号是从0开始的)

#取某个数据
uruguay_1986 = world_alcohol[1,4]
third = world_alcohol[2,2]
print urugury_1986
print third
#也可以用于数据切片
vector = numpy.array([5,10,15,20])
print (vector[0:3]) #0~3不包括3,0,1,2列
matrix = numpy.array([[5,10,15],[20,23,30],[32,34,35]])
print (matrix[:,1])#所有行第一列
print (matrix[:,0:2])

4.数据的判断

import numpy as np
vector = numpy.array([5,10,15,20])
#if the values are equal, the python interpreter ruturns True, otherwise, it returns False
vector == 10
matrix = numpy.array([[5,10,15],[20,23,30],[32,34,35]])
matrix ==23
#也可以打印出结果
x= (vector==10)
print x

判断之后,利用判断结果再进行索引

vector = numpy.array([5,10,15,20])
equal_to_ten = (vector == 10)
print equal_to_ten
print(vector[equal_to_ten])#输出为等于10的值
matrix = numpy.array([[5,10,15],[20,23,30],[32,34,35]])
equal_to_23 = (matrix[:,1] == 25)
print equal_to_23
print (matrix[equal_to_23,:])#打印结果是存在23那一行的所有列

5.逻辑事件判断

#与事件
vector = numpy.array([5,10,15,20])
equal_to_ten_and_five = (vector == 10) & (vector == 5)
print equal_to_ten_and_five
#运行结果 [False False False False]
#或事件
vector = numpy.array([5,10,15,20])
equal_to_ten_or_five= (vector == 10) | (vector == 5)
print equal_to_ten_or_five

6.对numpy.array所有值类型进行改变

vector = numpy.array(["1","2","3"])#带引号,说明传进来的值是str类型
print vector.dtype #查看数据类型
print vector
vector = vetcor.astype(float) #把所有数的类型转换成float类型
print vector.dtype
print vector

7.对numpy.array中数据求极值操作

vector = numpy.array([5,10,15,20])
vector.min() #求极小值

8.对numpy.array中数据进行求和操作

matrix = numpy.array([[5,10,15],[20,23,30],[32,34,35]])
matrix.sum(axis=1) #**axis=1按行求和**
matrix.sum(axis=0#**axis=0按列求和**

9.构造矩阵

print (np.arange(15)) #构造有15个元素的矩阵
a = np.arange(15).reshape(3,5) 利用reshape转换为35列的矩阵
a.shape #a的形状
a.ndim #a的维度 二维的
a.dtype.name #类型
a.size #总共有多少个元素

10.初始化矩阵

np.zeros((3,4)) #3行4列的全0矩阵
np.ones((2,3,4),dtype=np.int32) #2个3行4列的全1矩阵,元素类型是int型
#构造特定数列
np.arange(10,30,5)#从10开始到30结束,中间间隔是5 ,所以输出为([10,15,20,25])
np.arange(15).reshape(4,3)#构造一个15个元素的数,且3行4列
#随机模块
np.random.random((2,3))#构造2行3列随机数的矩阵
#linspace
from numpy import pi
np.linspace(0,2*pi,100)#从0到2*pi平均取100个值

11.矩阵计算

a = np.array([20,30,40,50])
b = np.arange(4)
print(a)
print(b)
c = a - b #此减法是对应元素相减
print c
c = c - 1#每个元素都减1
b**2 #b中每个元素都平方
#乘法
a = np.array([[1,1],[0,1]])
b = np.array([[2,0],[3,4]])
print (a * b) #对应位置相乘
print (a.dot(b))#矩阵乘法方法一
print (np.dot(a,b)) #矩阵乘法方法二

12.矩阵常用操作

import numpy as np
B = np.arange(3)
print(B)
print(np.exp(B))#e的多少次幂
print(np.sqrt(B))#给数组中每个元素开根号
a = np.floor(10*np.random.random((3,4)))#random.random((3,4))旨在于获得3行4列的随机元素的矩阵,元素大小在(0,1)之间,乘10之后扩大元素范围,而floor旨在于向下取整
print(a)
print(a.ravel())#把矩阵拉平即还原成一个向量
a.shape(6,2)#把a改成6行2列的矩阵
print(a.T)#输出为a的转置
a.reshape(3,-1)#a的元素个数已经确定,当指定行数为3时,列数自动计算,所以可以写为-1
#矩阵的拼接
a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))
print(np.hstack((a,b))#横着拼接
print(np.vstack((a,b))#纵着拼接
#矩阵切分
a = np.floor(10*np.random.random((2,12)))
np.hsplit(a,3)#把a横着平均切成3份
np.hsplit(a,(3,4))#把a延横着方向3和4的位置进行切分
np.vsplit(a) #纵着切

13.不同复制操作

a = np.arange(12#方法一
b = a
b.shape = 3,4#对b进行变化时,a也会发生同样的变化,并且a和b的id相同,即a,b是同一个东西,只是名字不一样
#方法二 软复制
c = a.view()#软复制,即c和a不是同一个东西,c改变形状时,a不改变形状。但是由于a和c公用一样的值,所以c的值改变时,a的值也要改变
#方法三 深复制
d = a.copy()#深复制,不管d做任何改变,a不改变,两者完全没有关系了

14.排序和索引

#索引
import numpy as np
data = np.sin(np.arange(20)).reshape(5,4)
print(data)
ind = data.argmax(axis=0)#按列找出值最大的位置,每列会返回一个位置索引序号
print(ind)
data_max = data[ind, range(data.shape[1])] #这一步可以输出每列的最大值
print(data_max)
#扩展
a = np.array(0,40,10)
print(a)
b = np.tile(a,(4,3))#把a的行变为原来的4倍,即进行4倍复制,列进行3倍复制
#排序
a = np.array([[4,3,5],[1,2,1]])
print(a)
b = np.sort(a,axis=1)#每行都从大到小排序
#索引
a = np.array([4,3,1,2])
j = np.argsort(a) #输出的是从小到大元素的位置号即输出为[2,3,1,0]
print(a[j]) #将结果传入原来的a中,可以得到按j排列的序列即[1,2,3,4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值