博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python的Numpy库简述
阅读量:6226 次
发布时间:2019-06-21

本文共 3819 字,大约阅读时间需要 12 分钟。

numpy 是 python 的科学计算库

import numpy as np

1、使用numpy读取txt文件

# dtype = "str":指定数据格式# delimiter = "\t":指定分割符# skip_header = 1:跳过第一行npinfo = np.genfromtxt("titanic_train.txt", delimiter = "\t", dtype = "U75", skip_header = 1)

 

2、ayyay数组,数据类型是必须相同。

vector = np.array([5, 10, 15, 20])matrix = np.array([[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]])print(vector)print(matrix)

 

3、numpy的数据类型,一般用到四种数据类型 bool、 int32/64、 float32/64、 string

print(vector.dtype)print(matrix.dtype)

 

4、获取第1行的第4个数

npinfo[0, 3]# 取1-3行和1-3列数据npinfo[0: 3, 0: 3]# 如果:省略前后数字表示所有数据npinfo[:, :]

 

5、判断array中元素的值

vector == 10matrix[:, 0] == 25

 

6、取出等于10的元素

token = (vector == 10)vector[token]

 

7、取出有25的这一行

token_25 = (matrix[:, 0] == 25)matrix[token_25]

 

8、string 转 float 类型

vector = np.array(["10", "20", "30", "40"])vector = vector.astype(float)print(vector)

 

9、基本运算

vector.sum()    # 求和vector.mean()    # 均值matrix.sum(axis = 0)    # 按列求和matrix.sum(axis = 1)    # 按行求和

 

10、缺失值填补

nan_4 = np.isnan(npinfo[:, 4])npinfo[nan_4, 4] = 0    # 缺失值填补,对有缺失值的第4列填补0

 

11、使用 numpy 创建数组和矩阵

# 创建一个3行5列的矩阵a = np.arange(15).reshape(3, 5)print(a)

 

12、查看当前数组是几维的

a.ndim

 

13、其它查看

a.dtypea.size

 

14、创建一个空矩阵

np.zeros((3, 4))

 

15、创建一个1矩阵 3维

np.ones((3, 4, 5), dtype = np.int32)

 

16、创建有步长的矩阵:np.arange( 起始,结束,步长 )

np.arange( 10, 15, 1 )

 

17、随机初始化矩阵

np.random.random((3, 4))

 

18、创建一个指定数量的矩阵

# np.linspace( 起始,结束,数量 )from numpy import pinp.linspace( 0, 2*pi, 100 )

 

19、求正弦

np.sin(np.linspace( 0, 2*pi, 100 ))

 

20、数组计算

a = np.array([10, 15, 20, 25])b = np.arange(4)a - bb ** 2 #注意:这个是n次方,不是乘法。a < 20

 

21、# 求内积 外积

A = np.array( [[1, 2], [0, 3]] )B = np.array( [[2, 0], [3, 4]] )# 内积 对应位置相乘A * B# 矩阵相乘A.dot(B)np.dot(A, B)
# 矩阵相乘 原理#A=#a b c #d e f #g h i#B=#A D #B E #C F#A.dot(B)=#aA+bB+cC aD+bE+cF#dA+eB+fC dD+eE+fF#gA+hB+iC gD+hE+iF

 

22、e的x次幂

A = np.arange(3)np.exp(A)

 

23、开根号

np.sqrt(A)

 

24、向下取整

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

 

25、转化为行向量

C.ravel()

 

26、重新shape,如:由3行4列转为2行6列

C.shape = (2, 6)

 

27、行列转置

C.T

 

28、其它reshape方法

C.resize((2, 6))C.reshape(3, -1)

 

29、矩阵拼接

x = np.floor(10*np.random.random((3, 4)))y = np.floor(10*np.random.random((3, 4)))# 按行拼接np.vstack((x, y))# 按列拼接np.hstack((x, y))

 

30、矩阵切分

x = np.floor(10*np.random.random((3, 12)))# 按列切成3份np.hsplit(x, 3)# 如果想切两刀怎么办?np.hsplit(x, (3, 5))y = np.floor(10*np.random.random((12, 2)))# 按行切分np.vsplit(y, 3)

 

31、矩阵相互赋值问题

z = np.arange(12)t = z     # 共享内存t is z    # 结果是True# print(id(t)) 和 print(id(z)) 的结果是一样的。t1 = z.view() #共享数据,但不共享内存t1 is z       # 结果是False# print(id(t)) 和 print(id(z)) 的结果是不同的。t2 = z.copy() #完全是两个对象

 

32、排序和索引

data = np.sin(np.arange(20).reshape(5, 4))# 找最大值ind = data.argmax(axis = 0)    # 最大值的索引data_max = data[ind, np.arange(data.shape[1])]print(data_max)不过有最函数:data.max(axis = 0)

 

33、# 排序

sx = np.floor(10*np.random.random((3, 4)))print(np.sort(sx, axis = 0))    # 按列排序print(np.sort(sx, axis = 1))    # 按行排序也可以这么写:sx.sort(axis = 1)

 

34、复制 tile

a = np.arange(0, 40, 10)print(a)# 将a的行复制2倍,列复制3倍b = np.tile(a, (2, 3))print(b)

 

35、8*8棋盘矩阵,其中1、3、5、7行和0、2、4、6列的元素置为1;1 ,3,5,7列和0,2,4,6行也是1

z = np.zeros((8,8), dtype = int)z[1::2,::2] = 1    # 注意:双冒号的用法z[::2,1::2] = 1print(z)

 

36、多赋值方法

z = np.random.random((10,10))zmin, zmax = z.min(), z.max()

 

37、归一化,将矩阵规格化到0~1,即最小的变成0,最大的变成1,最小与最大之间的等比缩放

z = 10*np.random.random((5,5))zmin, zmax = z.min(), z.max()z = (z-zmin)/(zmax-zmin) #归一化公式print(z)

 

38、矩阵相加

z = np.zeros((5,5))z += np.arange(5)print(z)

 

39、生成0~10之间均匀分布的11个数,包括0和10

z = np.linspace(0, 10, 11, endpoint=True, retstep=True)print(z)

 

40、交换矩阵的其中两行

a = np.arange(25).reshape(5,5)a[[0,1]] = a[[1,0]]print(a)

 

41、找出数组中与给定值最接近的数

z = np.array([[0,1,2,3],[4,5,6,7]])a = 5.1print(np.abs(z-a).argmin())

 

42、判断二维矩阵中有没有一整列数为0?

z = np.random.randint(0,3,(2,10))print(z.any(axis = 0))

 

43、生成二维的高斯矩阵

x,y = np.meshgrid(np.linspace(-1,1,10),np.linspace(-1,1,10))D = np.sqrt(x**2 + y**2)sigma, mu = 1, 0a = np.exp(-(D-mu)**2 / (2*sigma**2))print(a)

 

转载地址:http://sjnna.baihongyu.com/

你可能感兴趣的文章
Easy ui Datagrid(下拉、复选、只输入数字、文本) 追加、删除、更改
查看>>
20145209刘一阳 《网络对抗》逆向及BOF基础实践
查看>>
Groovy's dynamic mixin
查看>>
2018.10.27-dtoj-3996-Lesson5!(johnny)
查看>>
LCLFramework框架之数据门户
查看>>
python基础-----集合(在我的世界你是唯一)
查看>>
【转】Closeable, Readable, Flushable, Appendable
查看>>
css
查看>>
Java 语言中 Enum 类型的使用介绍
查看>>
Git and Subversion
查看>>
用Node+wechaty写一个爬虫脚本每天定时给女(男)朋友发微信暖心话
查看>>
opencv ,亮度调整【【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整...
查看>>
名校推荐20本英文经典书(留着)
查看>>
反射机制(Java)
查看>>
【leetcode】Permutations
查看>>
全世界最详细的一步一步搭建RAC步骤(二)---配置ASM+裸设备【weber出品】
查看>>
LeetCode算法题-Longest Uncommon Subsequence I(Java实现)
查看>>
译文:《Grouped》各章小结
查看>>
数据库设计心得
查看>>
【洛谷 P4342】[IOI1998]Polygon(DP)
查看>>