NumPy基础

NumPy基础
2019-4-20

Numpy = Numerical + Python

NumPy常用的任务:
  • 机器学习:各种矩阵运算
  • 图像处理和计算图形学:多维数字数组处理
  • 数学计算:数值积分、微分、内插、外推等
import numpy as np

创建数组

np.array([1,2,3,4], dtype = np.int8)
np.array((1,2,3,4), dtype = np.int8)
np.arange(5)   #[0,1,2,3,4]
np.linspace(0, 5, num = 3)  #[0, 2.5, 5]

np.random.random(5)  #5个0~1的随机数组成的一维数组
np.random.randint(0,4,size = (2,3))    #随机整数[0,4)
np.random.uniform(0,4,size = (2,3))    #均匀分布[0,4)

np.zeros((2,3), dtype = np.int8)
np.ones((2,3), dtype = np.int8)
np.empty([2,3], dtype = float)  ##生成一个维度为2*3的空数组
np.eye(2)  #array([[1.,0.],[0.,1.])
np.full((2,2), 5, dtype = np.int8)  #array([[5,5],[5,5]])

a = np.array([[1,2,3],[4,5,6]], dtype = np.int8)
b = np.empty_like(a)   #b和a的形状相同

查看数组信息

a = np.array([1,2,3,4], dtype = int8)
a.shape     #np.shape(a)
a.dtype     #a中元素的数据类型
'''
如果使用a.dtype = ... 重新改变已定义好的a的数据类型,需要注意的是内存中并不会改变
数组a所使用的内存大小。所以如果将a的数据类型变小,则会按照倍数将a的数据个数增加,比如从
np.int16转为np.int8,原来a中的每个数据都会拆分为2个。如果将a中单个元素的内存变大,则需
要能整除a总字节,比如从np.int8到np.int16,需要有偶数个数据才可以,这样原来每两个元素就
被合并为了一个元素。
'''
a.size      #a中元素个数
a.itemsize  #每个元素所占字节数
a.ndim      #a的维数
a.nbytes    #a中所有元素所占的字节数

数组运算

a = np.array([[1.0, 2.0], [3.0, 4.0]]) 
b = np.array([[5.0, 6.0], [7.0, 8.0]]) 
a + b 
a - b 
a * b   #(逐元素相乘)
a.dot(b)  #矩阵乘法
a / b
a ** 2  

a = arange(1,10)
a = a.reshape(3,3)  
'''
a = array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
'''
a.max()    #9
a.min()    #1
a.sum()    #45
a.cumsum()   #逐元素累积加和,array([ 1,  3,  6, 10, 15, 21, 28, 36, 45])  
a.T

np.sin(a)
np.cos(a)
np.sqrt(a)

数组索引
numpy数组索引图例

::n #从0索引开始,每n个取1个
a = np.arange(1,10)
a = a.reshape(3,3)   #a = array([[1,2,3],[4,5,6],[7,8,9]])
mask = a & 1 == 0 #取a中偶数的mask
a[mask]  #array([2, 4, 6, 8])
a[1]  #array([4, 5, 6])
index = np.where(a > 3)   #(array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))
a[index]   #array([4, 5, 6, 7, 8, 9])

a = a[:,[1,0,2]]   #交换列
a = a[::-1]        #反转行
a = a[:,::-1]      #反转列

打印数组

arr = np.arange(1,10)
np.set_printoptions(threshold = 6) 
>>>arr
array([1, 2, 3, ..., 7, 8, 9])
np.set_printoptions(threshold = np.nan)  #输出完整数组
>>>arr
array([1,2,3,4,5,6,7,8,9])

arr = np.random.random((2,4))
np.set_printoptions(precision = 2)
>>>arr
array([[0.68, 0.8 , 0.28, 0.13],
       [0.92, 0.92, 0.83, 0.54]])
np.set_printoptions(precision = 8)  #default
>>>arr
array([[0.67578085, 0.79732276, 0.27873146, 0.12832641],
       [0.91739986, 0.91518904, 0.83325872, 0.53644379]])

参考资料:
【numpy中文文档】https://www.numpy.org.cn/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值