python基础——numpy包

import numpy as np

ndarry

同种类型元素组成的多维数组

a = np.array([[1, 2, 3],[4, 5, 6]], dtype = float)

属性

  • ndim:维度
  • shape:数组形状
  • reshape:改变形状
  • dtype:元素类型
  • size:尺度,代表元素个数
a.ndim   #2
a.shape  #(2, 3)
a.reshape(3, -1) #(3, 2) -1代表未知,根据其他维度来计算这一维的数值
a.dtype  #float64
a.size   #6

创建方式

  • array:将普通序列转化为ndarray
  • zeros:创建指定长度或形状的全零数组
  • ones:创建指定长度或形状的全1数组
  • empty:创建一个未初始化的数组
np.zeros((3, 4))  #这里(3, 4)为自己想创建的数组类型
np.ones((3, 6))
np.empty((3, 6))
  • arange:(开始值, 终值, 步长)和python的range相同,不包括最终值
  • linspace:(开始值, 终值, 元素个数),包含最终值
  • logspace:(n, m, 元素个数),将从10n开始到10m结束,为等比数列
np.arange(5)  #array([0, 1, 2, 3, 4])
np.arange(0, 5, 1)  #array([0, 1, 2, 3, 4])

np.linspace(0, 10, 5)  #array([0, 2.5, 5, 7.5, 10])

np.logspace(0, 2, 5) #array([  1.        ,   4.64158883,  21.5443469 , 100.        ])
  • random:产生随机数
np.random.random((2, 4))  #数组维度为(2, 4)

数据类型

  • astype:转换数组类型
example = a.astype (int)

常见类型:

  • in8:-128 ~ 127,1个字节
  • in16:-32768 ~ 32767,2个字节
  • float16:5位指数,10位小数
  • float32:8位指数,23位小数
  • float64:11位指数,52位小数

操作

运算

采用广播机制,对于数组可以实现批量计算

  • 标量运算较为简单,+-*/同理
b = 2 * a  #array([[2, 4, 6], [8, 10, 12]])
  • 数组间元素运算(对应元素运算):+-*/要求数组形状相同
a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 2], [3, 4]])

c = a+b  #array([[2, 4], [6, 8]])
  • 矩阵外积:矩阵乘积
c = np.dot(a, b) #array([[ 7, 10], [15, 22]])

附:矩阵内积为2+4+6+8

布尔索引

索引有很多花样,这里只介绍最常用的两种

该索引方式适用于数值和字符串

example = np.random.random((2, 2))  
#array([[0.88270165, 0.79228441],[0.24445323, 0.33982179]])

example>0.5
#array([[ True,  True], [False, False]])

example2 = example[example>0.5]
#array([0.88270165, 0.79228441])

转置

example2 = example.transpose()
example2 = example.T
# array([[0.88270165, 0.24445323],[0.79228441, 0.33982179]])

通用函数

  • abs,fabs:计算整数、浮点数或复数的绝对值,fabs对非复数更快
  • sqrt:计算各元素的平方根
  • square:计算各元素的平方
  • exp:计算各元素的指数e的x次方
  • maximum、fmax:元素级别的最大值,fmax会忽略NaN
  • minimum、fmin:元素级别的最小值,fmin会忽略NaN
  • pow:对第一个数组中的元素A,根据第二个数组中的相应元素B, 计算A的B次方
  • isnan:返回一个表示“哪些值是NaN(不是一个数字)”的布尔类型数组
  • mod:元素级的求模(除法的余数)

最大值,最小值,均值

  • max():最大值
  • min():最小值
  • std():均值
a = np.array([[1, 2, 3],[4, 5, 6]])

a.max()  #6
a.min()  #1
a.std()  #1.707825127659933

a.min(axis=0)  #第0维即按列求最小值
#array([1, 2, 3])

where函数

np.where(条件, x, y)=x[x if 条件 else y]

example = np.array([[1, 2, np.NaN], [4, np.NaN, 6]])
example2 = np.where(np.isnan(example), 0, example)
# array([[1., 2., 0.], [4., 0., 6.]])

文件读写

二进制文件

a = np.array([[1, 2, 3],[4, 5, 6]])

np.save('data', a)
data = np.load('data.npy')

文本文件

主要以csv文件形式

np.savetxt('data.csv', a, delimiter=',')
data = np.loadtxt('data.csv', delimiter=',')

data = np.genfromtxt('data.csv', delimiter=',')
#会读取标题,如data['y']
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值