numpy

numpy核心数据结构:数组array

array属性:

shape:返回一个元组,表示array的维度

ndim:一个数字,表示array的维度的数目

size:一个数字,表示array中所有数据元素的数目

dtype:array中的元素的数据类型

创建向量和矩阵

import numpy as np
#创建向量
x=np.array([1,2,3,4,5])
#创建矩阵
x1=np.array(
    [
        [1,2,3,4],
        [5,6,7,8]
    ]
)
print('向量5维',x.shape)
print('矩阵2行4列',x1.shape)
print('向量维数',x.ndim)
print('矩阵维数',x1.ndim)
print('向量元素',x.size,'矩阵元素',x1.size)
print('向量元素类型',x.dtype,'矩阵元素类型',x1.dtype)
#arange创建向量方法   (起点,终点,步长)
x2=np.arange(3,12,3)
print(x2)

#使用full创建全为指定数向量
x3=np.full(7,'zhiding')
print(x3)
#使用full创建全为指定数的2行3列的矩阵
x4=np.full((2,3),'zhiding')
print(x4)
#fulllike创建形状相同的向量或者数组
like=np.array(
    [
        [1,2,3,4],
        [5,6,7,8],
        [5,6,7,8]
    ]
)
print(np.full_like(like,2))
#使用random模块生成随机数的数组
print('生成三个数',np.random.randn(3))
print('生成三行二列矩阵',np.random.randn(3,2))
print('生成三个二行四列',np.random.randn(3,2,4))
#向量的转化成矩阵
print('向量的转化成矩阵',np.arange(10).reshape(2,5))
# 矩阵的运算
print('每个元素都加一',like+1)
print('每个元素都乘以3',like*3)
print('每个元素都求sin',np.sin(like))
print('每个元素都求len',np.exp(like))
#也支持矩阵加法和减法

 Numpy对数组按索引查询

1.基础索引

import numpy as np
#创建向量
x=np.arange(10)
#创建矩阵
x1=np.arange(20).reshape(4,5)
#对一维数组的索引
print(x[2],x[2:4])
#对二维数组进行索引
print(x1[1,1],x1[-1,-1]) #按照行列筛选
print('筛选矩阵里面的某一行',x1[2])
print('筛选矩阵里面的某一列',x1[:,2])
print('筛选矩阵里面的多行',x1[:3])
print('筛选矩阵里面的多行多列',x1[:2,2:4])
#可以通过上述切片的方法来筛选出想要的位置并可直接进行修改

2.神奇索引

用列表(神奇索引)获取一系列位置

import numpy as np
#randint随机生成1到100以内的十个随机的整数
arr=np.array([2,4,5,7,8,5,43,2,2])
print('用列表也就是神奇索引获取对应位置',arr[[4,5,7]])

利用神奇索引进行大小排序

import numpy as np
#randint随机生成1到100以内的十个随机的整数
arr=np.random.randint(1,100,10)
print(arr)
print('返回从小到大排序的对应元素的下标,然后取后三个',arr.argsort()[-3:])
#自动进行筛选排序
print(arr[arr.argsort()[-3:]])

利用神奇索引用与矩阵

import numpy as np
#randint随机生成1到100以内的十个随机的整数
arr=np.array([
    [2,4,5,7,8,5],
    [5,3,4,6,4,8],
    [9,9,7,6,0,2],
    [5,4,7,2,3,6]
])
print(arr[[0,1],:])  #
print(arr[:,[0,1]])  #
print(arr[[0,1,2],[0,1,2]])#返回(1,1)(2,2)(3,3)处位置

3.布尔索引

当给数组添加条件判断的时候,满足条件判断就是true,不满足条件判断就是false

import numpy as np
#randint随机生成1到100以内的十个随机的整数
arr=np.array([
    [2,4,5,7,8,5],
    [5,3,4,6,4,8],
    [9,9,7,6,0,2],
    [5,4,7,2,3,6]
])
print(arr[arr<5])  #筛选符合小于5的元素
print(arr<5)
#将x<5的全部变成‘xiao’,其他的变成'da'

常用random函数

np的数学统计函数

 

如果没有设定axis,那么矩阵默认会是当成一列来进行函数运算

np.percentile(arr,[25,50,75])的意思是取位于数组里25%处,50%处,75%处的数

np.quantile(arr,[0.25,0.5,0.75])的意思是取位于数组里25%处,50%处,75%处的数

axis参数

axis=0代表消行,axis=1代表消列

import numpy as np
#randint随机生成1到100以内的十个随机的整数
arr=np.array([
    [2,4,5,7,8,5],
    [5,3,4,6,4,8],
    [9,9,7,6,0,2],
    [5,4,7,2,3,6]
])
print(arr.sum(axis=0))  #消掉行,计算列和
print(arr.sum(axis=1))  #消掉列,计算行和
print('\n')
print(arr.cumsum(axis=0))
print('\n')
print(arr.cumsum(axis=1))

 

posted @ 2020-11-25 22:14  克莱比-Kirby  阅读(113)  评论(0)    收藏  举报