0112-【课程实战】-Python数据分析炒菜-第15章-NumPy数组


15.1 Numpy简介

15.2 NumPy数组组成

import numpy as np

15.2.1 生成一般数组

# 列表
arr = np.array([2,4,6,8])
arr

输出
array([2, 4, 6, 8])

# 元组
arr = np.array((2,4,6,8))
arr

输出
array([2, 4, 6, 8])

# 嵌套列表
arr = np.array([[2,4],[6,8]])
arr

输出
array([[2, 4],
       [6, 8]])

15.1.2 生成特殊类型数组

np.arrange(start,stop,step)
# 默认从0开始,步长为1
np.arange(1,15,3)
输出
array([ 1,  4,  7, 10, 13])

生成0的数组

np.zeros(3)
np.zeros((3,2))

array([0., 0., 0.])
array([[0., 0.],
       [0., 0.],
       [0., 0.]])

生成1的数组

np.ones((3,2))

array([[1., 1.],
       [1., 1.],
       [1., 1.]])

生成一个正方形单位矩阵

np.eye(3)

array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

15.2.3 生成随机数组

0,1分布,np.random.rand()

# 生成(0,1)之间的随机数组,指定生成性状
np.random.rand()
np.random.rand(4)

# 输出
array([0.55381912, 0.9307132 , 0.94732658, 0.83996943])

指定维度

np.random.rand(2,3)

输出

Out[97]:
array([[0.74212018, 0.38686712, 0.42428739],
       [0.28145782, 0.11445618, 0.30651649]])

正态分布 np.random.randn()

# 生成正态分布的数组,指定性状
np.random.randn()
np.random.randn(3)
np.random.randn(2,3)

输出
array([ 1.2152745 ,  0.31357261, -0.79089988])
array([[-0.39924517, -0.12559688, -0.57329179],
       [ 0.41266652, -0.34896791,  0.28467112]])

数值一般为-1,1之间


生成一定范围的随机数 np.random.randint

# 生成一定范围的随机数
np.random.randint(low,hight=None,size =None)

生成1,5之间,10个数

# 生成一定范围的随机数
np.random.randint(1,5,10)
np.random.randint(1,5,size=(2,3))

Out[102]:
array([2, 3, 1, 2, 4, 3, 1, 3, 3, 3])

array([[2, 4, 1],
       [2, 1, 2]])

从一致数组中随机选取相应大小的数组 np.random.choice

# 从一致数组中随机选取相应大小的数组
np.random.choice(a,size = None,replace = None,p = None)
  • a 代表数组,——从数组中抽取
  • a 代表整数,——相当于range(整数)
np.ramdom
# replace 为True,说明可以重复抽样
np.random.choice(2,2,replace = True)

array([0, 0])

# 不重复抽样
np.random.choice(2,2,replace = False)


Out[121]:
array([1, 0])

p——概率
p:1-D阵列式,可选
与a中每个条目相关的概率。
如果没有给出样品,则假定均匀分布
一个条目。

>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0])

概率的抽样,暂时用不到。


从整数数组中抽样,np.random.randint

np.random.randint(low, high=None, size=None, dtype='l')

dtype , The default value is ‘np.int’.

np.random.randint(1, high=10, size=2, dtype='l')


Out[124]:
array([3, 7])

没有是否指定,可以进行不重复抽样

np.random.randint(1, high=3, size=2, dtype='l')


Out[131]:
array([1, 1])

15.3 NumPy数组的基本属性

数组的形状

arr = np.array([[1,2,3],[3,4,5]])
arr.shape


Out[135]:
(2, 3)

数组的大小

arr.size

Out[136]:
6

数组的类型

arr.dtype

Out[137]:
dtype('int32')
  • int
  • float
  • object
  • string_
  • unicode_

数组的维度

arr.ndim


Out[138]:
2

15.4 NumPy数组的数据选取

15.4.1 一维数组选取

arr = np.arange(10)
arr

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

传入位置,索引

arr[3]
arr[-1]

传入某个区间,切片

arr[1:3]
arr[1:]
arr[:3]

传入某个条件

arr[arr>3]

15.4.2 多维数据选取

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

获取某行

arr[1]

获取某些行

arr[1:3]

获取某列数据

arr[:,1]

获取某些列

arr[:,0:2]

行列同时获取

arr[0:2,1:3]

15.5 NumPy数组的数据预处理

15.5.1 NumPy数组的类型转换

格式转换

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr

arr.dtype
arr2 = arr.astype(np.float64)
arr2.dtype


Out[152]:
dtype('float64')
arr3 = arr.astype(np.string_)
arr3


Out[154]:
array([[b'1', b'2', b'3'],
       [b'4', b'5', b'6'],
       [b'7', b'8', b'9']], dtype='|S11')

15.5.2 Numpy 数组的缺失值处理

arr = np.array([1,2,np.nan,4])
arr

Out[156]:
array([ 1.,  2., nan,  4.])

# 判断
np.isnan(arr)

Out[157]:
array([False, False,  True, False])


# 0填充
arr[np.isnan(arr)] = 0
arr


Out[159]:
array([1., 2., 0., 4.])

15.5.3 Numpy数组的重复值处理

arr4 = np.array([1,3,2,1])
np.unique(arr4)

Out[162]:
array([1, 2, 3])

15.6 NumPy数组重塑

15.6.1 一维数组重塑

arr = np.arange(8)
arr.reshape(2,4)


Out[163]:
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])

15.6.2 多维数组重塑

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr.shape
arr.reshape(1,9)


Out[168]:
array([[1, 2, 3, 4, 5, 6, 7, 8, 9]])

15.6.3 数组转置

arr.T

15.7 Numpy 数组合并

import numpy as np

arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2 = np.array([[11,12,13],[14,15,16],[17,18,19]])

np.concatenate,横向拼接

np.concatenate([arr1,arr2],axis = 1)


Out[172]:
array([[ 1,  2,  3, 11, 12, 13],
       [ 4,  5,  6, 14, 15, 16],
       [ 7,  8,  9, 17, 18, 19]])

np.hstack

np.hstack([arr1,arr2])


Out[173]:
array([[ 1,  2,  3, 11, 12, 13],
       [ 4,  5,  6, 14, 15, 16],
       [ 7,  8,  9, 17, 18, 19]])

np.column_stack

np.column_stack([arr1,arr2])

Out[174]:
array([[ 1,  2,  3, 11, 12, 13],
       [ 4,  5,  6, 14, 15, 16],
       [ 7,  8,  9, 17, 18, 19]])

15.7.2 纵向拼接

np.concatenate([arr1,arr2],axis = 0)
np.vstack([arr1,arr2])
np.row_stack([arr1,arr2])

15.8 常用数据分析函数

15.8.1 元素级函数

  • abs 绝对值
  • sqrt 平方根
  • square 平方
  • exp 以e为底的指数
  • log log10 log2 log1p 为e为低,10为低,2为低为底的对数,以及log(1+x)
  • modf 浮点数,将小数和证书部分以独立数组返回
  • isnan 判断是是NaN
arr = np.arange(4)
np.square(arr)
np.sqrt(arr)

15.8.2 描述统计函数

  • sum
  • mean
  • std \ var
  • min \ max
  • argmin \ argmax 最大值和最小值的对应索引
  • cumsum 所有元素的累积和
  • cumprod 所有元素的累计积
import numpy as np

arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2 = np.array([[11,12,13],[14,15,16],[17,18,19]])

arr1.sum()
arr1.sum(axis = 1) # 求每一行
arr1.sum(axis = 0) # 求每一列

arr1.max(axis = 1)
arr1.max(axis = 0)

15.8.3 条件函数

arr = np.array([56,61,65])
np.where(arr>60,"及格","不及格")

array(['不及格', '及格', '及格'], dtype='<U3')


np.where(arr>60)


Out[186]:
(array([1, 2], dtype=int64),)

15.8.4 集合关系

# 包含
np.unique(arr1)
np.union1d(arr1,arr2) # 并集
np.setdiff1d(arr1,arr2)  # 差集,在arr1,不在arr2
np.setxor1d(arr1,arr2) # 集合的对称差,不同时在arr1、arr2中
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值