编程地带Numpy机器学习与数据挖掘

Numpy

2019-03-07  本文已影响0人  MA木易YA

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


ndarray对象

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

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. 从现有数组生成

IV. 生成固定范围的数组

V. 生成随机数

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

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

np.where(array>0,1,0)
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()最大数所在位置

II. 数组间运算

III. 数组与数组

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

IV. 广播机制

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

将两个矩阵从右向左依次排开(数字为每个维度所含元素个数),按照如上条件判断,最终运算后的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. 矩阵相乘

需要满足以下两点


合并与分割

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

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,可自行做替换或者其他处理。

上一篇下一篇

猜你喜欢

热点阅读