Numpy

作者: MA木易YA | 来源:发表于2019-03-07 21:13 被阅读0次

    NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。


ndarray对象

    ndarray 对象是用于存放同类型元素的多维数组。

  • ndarray存储连续相同类型的数据,方便运算查找
  • ndarray支持并行化运算
  • 底层由C语言实现,无GIL限制,支持多线程

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

image.png
import numpy as np 
a = np.array([1,2,3])  
print (a)

#输出
[1, 2, 3]

ndarray属性

常用的就是形状和类型,可以在创建数组时指定data1 = np.array(shape=(2,3), dtype= float)

image.png

基本操作

1. 生成数组

image.png

I. 生成0的数组
numpy.zeros(shape, dtype = float, order = 'C')

II. 生成1的数组
numpy.ones(shape, dtype = None, order = 'C')

III. 从现有数组生成

  • np.copy()
  • np.asarray()
  • np.array()
  • copyarray是浅拷贝,asarray是深拷贝

IV. 生成固定范围的数组

  • np.linspace(a,b,c)——生成[a,b]间的c个数
  • np.arange(a,b,c)——生成[a,b)中步长为c的数

V. 生成随机数

  • 均匀分布(每组可能性相等[low,high),size为输出样本数,元组/int类型) —— np.random.uniform(low,high,size)

  • 正态分布(波动程度、集中程度、稳定性等) —— np.random.normal(low,high,size)

2. 切片索引

这个类似python列表的索引和切片操作,可自行尝试研究

import numpy as np
 
a = np.arange(10)  
b = a[2:7:2]   # 从索引 2 开始到索引 7 停止,间隔为 2
print(b)

#输出
[2,4,6]

3. 形状修改

I. ndarray.reshape(shape)返回一个新的ndarray,但是不是行列直接转换,自动计算:ndarray.reshape(-1,b)
II. ndarray.resize(shape)无返回值,直接更改原型
III. ndarray.T,转置,行变成列,列变成行

4. 类型修改

I. ndarray.astype(type)
II. ndarray.tostring()序列化到本地

5. 数组去重

I. np.unique(array)
II. set操作,先用flatten()将多维数组转成一维再用set操作


运算

1. 逻辑运算

  • 布尔索引

将boolean值作为参数用作条件判断

stock_change = np.random.normal(0, 1, (8, 10))
    stock_change = stock_change[0:5, 0:5]
    #逻辑判断,如果大于0.5则标记为True,否则为False
    print(stock_change >0.5)
    print("******************************")

    #BOOLEAN赋值,将满足条件的设置指定值
    stock_change[stock_change > 0.5] = 1
    print(stock_change)


#输出

[[False  True False False False]
 [False False False False False]
 [False False False  True False]
 [ True False  True False  True]
 [False  True  True  True False]]
******************************
[[-0.6644082   1.          0.12243582  0.09599675  0.0798174 ]
 [-2.62284685 -0.59904615 -0.27598282  0.20408988  0.37416402]
 [-1.2548002   0.04883909 -0.69198354  1.          0.05396606]
 [ 1.          0.26810907  1.         -1.08110028  1.        ]
 [ 0.07104746  1.          1.          1.          0.0382673 ]]
  • 通用判断函数

I. np.all(),条件都满足则返回True,否则False

np.all(stock_change[0:2, 0:5]>0 )

#输出
False

II. np.or(),一个条件满足则返回True,全为False才返回False

np.or(stock_change[0:2, 0:5]>0 )

#输出
True
  • 三元运算符np.where(a,b,c)

a为条件(一组布尔值),b为返回True设置的值,c为返回False设置的值

np.where(array>0,1,0)
  • 复合逻辑需要结合np.logical_and和np.logical_or使用
np.where(np.logical_and(array>0,array<2),1,0)

np.where(np.logical_or(array>0,array<2),1,0)

2. 统计运算

统计指标, min、max、mean(平均值)、median(中位数)、var(方差)、std(标准差)

I. np.argmax()最大数所在位置

  • 注意是按行还是按列,指定axis轴——np.argmax(array, axis=1)

II. 数组间运算

  • 数组与数——直接对组内进行运算,不同于python列表的运算

III. 数组与数组

并非任意数组间都能直接进行运算,需要满足广播机制

IV. 广播机制

当操作两个数组时,numpy会逐个比较它们的shape(构成的元组tuple),只有满足以下条件的数组间才能够进行运算:

  • 维度相等
  • shape(其中相对应的一个地方为1)

将两个矩阵从右向左依次排开(数字为每个维度所含元素个数),按照如上条件判断,最终运算后的shape结果值取对应值的较大值。

可运算:

image.png

不可运算:

image.png

3. 矩阵运算

矩阵(matrix),必须是二维的,但array不同,array可为多维

I. 二维数组
np.mat()——将数组转化为矩阵

    array = np.array([[10,20],[20,30],[30,40]])
    print(type(array))
    print("************")
    mat = np.mat(array)
    print(type(mat))

#输出
<class 'numpy.ndarray'>
************
<class 'numpy.matrixlib.defmatrix.matrix'>
  

II. 矩阵相乘

需要满足以下两点

  • 第一个矩阵的列数=第二个矩阵的行数,形成:(m,n)*(n,l) = (m,l)

  • 运算规则:

    SKX935RWX3ECSXA1VAVGG~Q.png
  • 矩阵乘法api
    • matmul
    • np,dot
    • mat形式矩阵可直接相乘,ndarray形式矩阵需要用上述方法相乘,或者使用array1 @ array2方式

合并与分割

I.合并(axis值不确定的话运行验证一下即可)

  • 水平合并
    • np.hstack((a,b))
    • concatenate((a,b), axis=1)
  • 竖直合并
    • np.vstack((a,b))
    • concatenate((a,b), axis=0)

II. 分割
numpy.split(ary, indices_or_sections, axis=0)

image.png

IO操作

I. numpy读取
np.genfromtxt('1.csv', delimiter=',')

II. 缺失值&NAN
    numpy在处理字符串以及处理缺失值方面不如pandas省事,当读取文本中出现float形式或者有缺失值时会出现NAN,可自行做替换或者其他处理。

相关文章

  • 科学计算库numpy的执行示例

    numpy1 numpy2 numpy3 numpy4

  • numpy中的常量

    Constants 正无穷 numpy.inf numpy.Inf numpy.Infinity numpy.in...

  • NumPy学习资料

    Numpy 中文资料 NumPy 中文文档 NumPy 中文用户指南 NumPy 中文参考手册

  • Numpy基础

    安装Numpy Numpy Numpy属性 ndim:纬度 shape:行数和列数 size:元素个数 Numpy...

  • Numpy和Pandas基本操作速查

    """ numpy 基本操作 """'''安装 Numpy 的方法:pip install numpy''''''...

  • numpy 基础

    numpy 基础 导入numpy 版本 np常用方法 numpy.array 的基本属性 numpy.array ...

  • Numpy入门

    1、熟悉 numpy 的基础属性 2、numpy 创建 array 3、numpy的基础运算 4、numpy索引 ...

  • 学习:biopython的安装

    安装Numpy 因为使用biopython需要numpy的支持,所以需要先安装numpy。安装numpy过程如下:...

  • Numpy

    Numpy中文文档 # 基本语法 ``` import numpy myText = numpy.genfromt...

  • numpy运算

    numpy的与运算 numpy 中 argsort() numpy 中的布尔索引

网友评论

    本文标题:Numpy

    本文链接:https://www.haomeiwen.com/subject/kdcauqtx.html