python学习笔记之Numpy

Numpy学习笔记

首先需要导入Numpy包

from numpy import *

一、ndarray数组

1、数组的生成

>>>a = array([0,1,2,3])

可以与C语言一样用索引来定位数组元素,如:

>>>a[0] = 5

也可以将数组改为二维数组

>>>a.shape = 2,2
>>>print(a)
   [[5 1]
    [2 3]]

特例:

>>>b = zeros((2,3),dtype=int)#生成2行3列的0填充数组
   [[0 0 0]
    [0 0 0]]
>>>a = ones((3,2),dtype=int) * 5 
   [[5 5]
    [5 5]
    [5 5]]
>>>b.fill(-4.8)#向数组中填充元素,填充元素会转化为数组原数据类型
   [[-4 -4 -4]
    [-4 -4 -4]]
>>>a = arange(0,80,10)#start到end间隔是10左闭右开
   array([ 0, 10, 20, 30, 40, 50, 60, 70])
>>>a = identity(3,dtype=int)#生成单位矩阵
   array([[ 1.,  0.,  0.],
          [ 0.,  1.,  0.],
          [ 0.,  0.,  1.]])

2、数组的类型

复数数组

>>>a = array([1 + 1j, 2, 3, 4])
>>>a.real#实部
>>>a.imag#虚部
>>>a.conj()#查看共轭

类型转换:

>>>asarray(a, dtype=float64)#不会修改原数组的值,但转换与原数组类型相同时返回引用
>>>a.astype(float64)#无论何时返回复制

3、数组的属性

>>>a.size#数组的大小
>>>a.shape#数组的形状
>>>a.nbytes#数组元素所占空间
>>>a.ndim#数组维数

4、数组索引切片

花式索引:
与切片不同花式索引返回的是对象的一个复制不是引用。

>>>indices = [1, 2, -3]
>>>y = a[indices]

还可以用bool值

>>>mask = array([0,1,1,0,0,1,0,0],dtype=bool)
>>>a[mask]

mask数组可以用布尔表达式生成

>>>from numpy.random import rand
>>>a = rand(10)#生成[0,1)之间的10个随机数
>>>mask = a > 0.5
>>>a[mask]

二维花式索引:

>>>a[(0,1,2,3,4), (1,2,3,4,5)]
#行标列标一一对应,a[0,1],a[1,2]...5个数
>>>a[3:, [0,2,5]]#第四行后,1,3,6列
>>>mask = array([1,0,1,0,0,1],dtype=bool)
>>>a[mask, 2]#依然可以用mask索引
>>>y = a[:3]#返回前3行

where语句:

>>>loc = where(a > 10)
>>>a[loc]
   (array([0, 0, 1, 1], dtype=int64), array([1, 3, 2, 3], dtype=int64))
   #如同二维花式索引,行列坐标一一对应
>>>rows, cols = where(a>10)

5、数组的方法

求和:

>>>a = array([[1,2,3],[4,5,6]])a.sum(axis=1)
>>>sum(a)
>>>sum(a,axis=0)#或者a.sum(axis=0)沿着第一维度增方向求和,得到行向量
   array([5, 7, 9])
>>>sum(a,axis=1)#或者a.sum(axis=1)沿着第而维度增方向求和,得到类向量
   array([ 6, 15])

求积:

>>>a.prod()
>>>prod(a, axis=0)

最大值最小值:

>>>a.max()#全局最大
>>>a.max(axis=-1)
>>>a.min()#全局最小
>>>a.min(axis=0)#沿着第一维度最小,得到行向量

最大值最小值位置:

>>>a.argmin()
>>>a.argmax(axis=0)

均值:

>>>a.mean()
>>>a.mean(axis=-1)
>>>average(a, axis = 0, weights=[1,2])#可以算加权平均

标准差:

>>>a.std(axis=1)

方差:

>>>a.var(axis=1)

将数值限制在某个范围内:

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

计算最大值与最小值之差:

>>>a.ptp(axis=1)

近似方法:

>>>a.round(decimals=1)#近似到以为小数

6、数组排序

分为函数和方法
注意:其他三种不改变原数组,只有data.sort()方法会改变

>>>sort(weights)#函数
>>>data.sort()#方法 注意注意
>>>argsort(weights)#函数
>>>data.argsort()#方法

对二维数组默认相当于对每一行的元素进行排序

>>>a = array([
        [.2, .1, .5], 
        [.4, .8, .3],
        [.9, .6, .7]
    ])
>>>sort(a)
   array([[ 0.1,  0.2,  0.5],
          [ 0.3,  0.4,  0.8],
          [ 0.6,  0.7,  0.9]])
>>>sort(a, axis = 0)
   array([[ 0.2,  0.1,  0.3],
          [ 0.4,  0.6,  0.5],
          [ 0.9,  0.8,  0.7]])

6、数组形状

修改形状

>>>a = arange(6)
>>>a.shape = 2,3
>>>b = a.reshape(3,2)#返回一个新数组

数组连接

x = array([
        [0,1,2],
        [10,11,12]
    ])
y = array([
        [50,51,52],
        [60,61,62]
    ])
z = concatenate((x,y))#第一维度连接
z = concatenate((x,y), axis=1)#第二维度连接

降维

a = array([[0,1],
           [2,3]])
b = a.flatten()#降为1维数组

6、数组对角线

>>>a.diagonal()
>>>a.diagonal(offset=1)#对角线右移
>>>a.diagonal(offset=-1)#对角线左移
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值