Focuspoints' Blog

A blog with My IT Life.


hey,欢迎来到我的小博客~

Python数据分析入门 - Numpy(1)

安装Numpy

终端: sudo pip install numpy CMD: pip install numpy

  • 也可以使用anaconda集成了numpy及pandas.
  • 为了方面后续代码使用anaconda的jupyter notebook。(自行百度anaconda安装)

引用Numpy

#引入Numpy文件
import numpy as np # ‘as np’意为Numpy在此程序中的别名为np(np为约定名称,也可改为其他)

  • 数据维度 包含: 一维数组(常用列表存储) 二维数组(常用数组存储) 多维数组(常用字典存储)

  • Numpy数组类型 - ndarray(类似于array数组)

1. N维数组对象:ndarray

例子:计算$ A^2+B^3 $,其中,A和B是一维数组

#example

/*python常规操作*/
def pySum():
    A = [1,2,3,4,5]
    B = [6,7,8,9,10]
    C = []
    
    for i in range(len(A)):
        C.append(A[i]**2 + B[i]**3)
    return C
print(pySum())

/*Numpy操作*/
import numpy as np

def npSum():
    A = np.array([1,2,3,4,5])
    B = np.array([6,7,8,9,10])
    C = A**2 + B**2
    return C
print(npSum())

2. dnarray属性

属性说明
.ndim秩,即轴的数量或维度的数量
.shapendarray对象的尺度,对于矩阵,n行m列
.sizendarray对象元素的个数,相当于.shaor中n*m的值
.dtypendarray对象的元素类型
.itemsizendarray对象中每个元素的大小,以字节为单位
#example
a = np.array([0,1,2,3,4],[5,6,7,8,9])
print(a.ndim) #2
print(a.shape) #(2,5)
print(a.size) #10
print(a.dtype) #dtype('int32')
print(a.itemsize) #4

3. dnarray元素类型

  • 类型1
数据类型说明
bool布尔类型,True或False
intc与C语言中的int了类型一直,一般是int32或int64
intp用于索引的整数,与C语言中ssize_t一致,int32或int64
int8字节长度的整数,取值:[-128,127]
int1616位长度的整数,取值:[-32768,32767]
int3232位长度的整数,取值:[$-2^{31}$,$2^{31}-1$]
int6464位长度的整数,取值:[$-2^{63}$,$2^{63}-1$]
  • 类型2
数据类型说明
uint88位无符号整数,取值:[0,255]
uint1616位无符号整数,取值:[0,65535]
uint3232位无符号整数,取值:[0,$2^{32}-1$]
uint6464位无符号整数,取值:[0,$2^{64}-1$]
float1616位半精度浮点数:1位符号位,5位指数,10位尾数
float3232位半精度浮点数:1位符号位,8位指数,23位尾数
float6464位半精度浮点数:1位符号位,11位指数,52位尾数
  • 类型3
数据类型说明
complex64复数类型,实部和虚部都是32位浮点数
complex128复数类型,实部和虚部都是64位浮点数

复数类型:实部(.real) + j虚部(.imag)

import numpy as np
x = np.array([[0,1,2,3,4],[5,6,7,8,9]])
x.shape
(2, 5)

4. ndarray实例

x = np.array([[0,1,2,3,4],[9,8,7,6]])
x.shape
(2,)
x.dtype
dtype('O')
x
array([list([0, 1, 2, 3, 4]), list([9, 8, 7, 6])], dtype=object)
x.itemsize
8
x.size
2
  • ndarray数组可以由非同质对象构成,但非同质ndarray对象无法有效发挥NumPy优势,尽量避免使用。

5. ndarray数组创建

  • 从Python中的列表、元组等类型创建ndarray数组

x = np.array(list/tuple)

x = np.array(list/tuple, dtype=np.float32)

  • 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等
函数说明
np.arange(n)类似range()函数,返回ndarray类型,元素从0到n‐1
np.ones(shape)根据shape生成一个全1数组,shape是元组类型
np.zeros(shape)根据shape生成一个全0数组,shape是元组类型
np.full(shape,val)根据shape生成一个数组,每个元素值都是val
np.eye(n)创建一个正方的$n*n$单位矩阵,对角线为1,其余为0
函数说明
np.ones_like(a)根据数组a的形状生成一个全1数组
np.zeros_like(a)根据数组a的形状生成一个全0数组
np.full_like(a,val)根据数组a的形状生成一个数组,每个元素值都是val
其他函数说明
np.linspace()根据起止数据等间距地填充数据,形成数组
np.concatenate()将两个或多个数组合并成一个新的数组

6.ndarrary数组的变换

  • 类型变换
a = np.ones((2,3,4), dtype=np.int32)
  • 维度变换
a = np.arange(30).reshape((2,3,5))
a
array([[[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14]],

       [[15, 16, 17, 18, 19],
        [20, 21, 22, 23, 24],
        [25, 26, 27, 28, 29]]])

7.nadarray数组的操作

  • 数组索引和切片 索引:获取数组中特定位置元素的过程 切片:获取数组元素子集的过程

  • 一维数组的索引和切片:与Python的列表类似

a = np.array([1,2,3,4,5,6])
a[2]
7
a[1:4:2] #起始序号:终止序号:步长,冒号分割
array([3,5])
  • 多维数组的切片
a = np.arange(24).reshape((2,3,4))
a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],
       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
a[:,1,-3] #选取一个维度用:

​ array([ 5, 17])

a[:,1:3,:] #每个维度切片方法与一位数组相同
array([[[ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],
       [[16, 17, 18, 19],
        [20, 21, 22, 23]]])
a[:,:,::2]#每个维度可以使用步长跳跃切片
array([[[ 0,  2],
        [ 4,  6],
        [ 8, 10]],
       [[12, 14],
        [16, 18],
        [20, 22]]])

8.nadarray数组的运算

函数说明
np.abs(x) np.fabs(x)计算数组各元素的绝对值
np.sqrt(x)计算数组各元素的平方根
np.square(x)计算数组各元素的平方
np.log(x) np.log10(x)  np.log2(x)计算数组各元素的自然对数、10底对数和2底对数
np.ceil(x) np.floor(x)计算数组各元素的ceiling值或floor
np.rint(x)计算数组各元素的四舍五入值
np.modf(x)将数组各元素的小数和整数部分以两个独立数组形式返回
np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x)计算数组各元素的普通型和双曲型三角函数
np.exp(x)计算数组各元素的指数值
np.sign(x)计算数组各元素的符号值,1(+), 0, ‐1(‐)

二元函数

函数说明
+ ‐* / *两个数组各元素进行对应运算
np.maximum(x,y) np.fmax() np.minimum(x,y)np.fmin()元素级的最大值/最小值计算
np.mod(x,y)元素级的模运算
np.copysign(x,y)将数组y中各元素值的符号赋值给数组x对应元素
< >  >= <= == !=算术比较,产生布尔型数组
最近的文章

Python数据分析入门 - Pandas

Pandas介绍pandas可是说是numpy的升级版。如果把numpy看作是一个list,那pan…

pandas  python  numpy  数据分析  继续阅读
更早的文章

Python数据分析入门 - Numpy(2)

Python数据分析入门-Numpy(2)标签(空格分隔):python数据分析pandascsva…

numpy  python  数据分析  继续阅读
0评论