python数据分析————数组转换和运算
数组转换维度变换reshape(shape)>>> a=np.ones((2,3,4))>>> a.reshape((3,8))不改变元素,返回一个shape形状的数组,原数组不变array([[1., 1., 1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.
·
数组转换
维度变换
- reshape(shape)
>>> import numpy as np
>>> a=np.ones((2,3,4))
>>> a.reshape((3,8)) 不改变元素,返回一个shape形状的数组,原数组不变
array([[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.]])
>>> a
array([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]])
- resize(shape)
a=np.ones((2,3,4))
>>> a.resize((3,8)) 与reshape功能一致,但改变原数组
>>> a
array([[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.]])
- flatten()
>>> a=np.ones((2,3,4))
>>> a.flatten() 对数组进行降维,折叠成一维数组,原数组不变
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1.])
>>> a
array([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]])
类型转换
- astype(float)
>>> a=np.ones((2,3,4),dtype=np.int)
>>> a
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]])
>>> a.astype(float) 创建一个新数组,改变数组类型,常用于拷贝一个数组
array([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]])
- tolist()
>>> a=np.ones((2,3,4),dtype=np.int)
>>> a.tolist() 数组向列表转换
[[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]]
- array()
(需要调用numpy模块的array方法)
>>> from numpy import array
>>> b= a.tolist()
>>> b
[[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]]
>>> array(b) 列表向数组转换
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]])
数组的运算
数组与标量之间的运算
- 数组与标量之间的运算作用与数组的每一个元素
>>> 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
array([[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]],
[[13, 14, 15, 16],
[17, 18, 19, 20],
[21, 22, 23, 24]]])
>>> a-10
array([[[-10, -9, -8, -7],
[ -6, -5, -4, -3],
[ -2, -1, 0, 1]],
[[ 2, 3, 4, 5],
[ 6, 7, 8, 9],
[ 10, 11, 12, 13]]])
>>> a*2
array([[[ 0, 2, 4, 6],
[ 8, 10, 12, 14],
[16, 18, 20, 22]],
[[24, 26, 28, 30],
[32, 34, 36, 38],
[40, 42, 44, 46]]])
>>> a/0.5
array([[[ 0., 2., 4., 6.],
[ 8., 10., 12., 14.],
[16., 18., 20., 22.]],
[[24., 26., 28., 30.],
[32., 34., 36., 38.],
[40., 42., 44., 46.]]])
一元运算函数
- mean() 计算平均值
- np.abs() np.fabs() 计算数组各元素的绝对值(浮点数)
- np.sqrt() 计算数组各元素的平方根
- np.square() 计算数组各元素的平方
- np.log()/np.log2()/np.log10() 计算各元素的自然对数,2底对数,10底对数
- np.rint() 计算数组各元素的四舍五入值
- np.exp() 计算数组各元素的指数值
>>> 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.mean()
11.5
>>> np.abs(a-10)
array([[[10, 9, 8, 7],
[ 6, 5, 4, 3],
[ 2, 1, 0, 1]],
[[ 2, 3, 4, 5],
[ 6, 7, 8, 9],
[10, 11, 12, 13]]])
>>> np.fabs(a-10)
array([[[10., 9., 8., 7.],
[ 6., 5., 4., 3.],
[ 2., 1., 0., 1.]],
[[ 2., 3., 4., 5.],
[ 6., 7., 8., 9.],
[10., 11., 12., 13.]]])
>>> np.sqrt(a)
>>> np.square(a)
array([[[ 0, 1, 4, 9],
[ 16, 25, 36, 49],
[ 64, 81, 100, 121]],
[[144, 169, 196, 225],
[256, 289, 324, 361],
[400, 441, 484, 529]]], dtype=int32)
>>> np.log(a+1)
>>> np.log2(a+1)
>>> np.log10(a+1)
>>> np.rint(a+0.5)
array([[[ 0., 2., 2., 4.],
[ 4., 6., 6., 8.],
[ 8., 10., 10., 12.]],
[[12., 14., 14., 16.],
[16., 18., 18., 20.],
[20., 22., 22., 24.]]])
>>> np.exp(a)
数组与数组之间的运算
- 算数运算与算数比较
>>> a=np.arange(24).reshape((2,3,4))
>>> b=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+b 数组相加
array([[[ 0, 2, 4, 6],
[ 8, 10, 12, 14],
[16, 18, 20, 22]],
[[24, 26, 28, 30],
[32, 34, 36, 38],
[40, 42, 44, 46]]])
>>> a-b 数组相减
array([[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]],
[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]])
>>> a*b 乘法
array([[[ 0, 1, 4, 9],
[ 16, 25, 36, 49],
[ 64, 81, 100, 121]],
[[144, 169, 196, 225],
[256, 289, 324, 361],
[400, 441, 484, 529]]])
>>> a/b 除法(因为0不能作为被除数所以会有一个错误,nan为空值)
__main__:1: RuntimeWarning: invalid value encountered in true_divide
array([[[nan, 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]],
[[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]]])
>>> a==b
array([[[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True]],
[[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True]]])
>>> a > b
>>> a < b
>>> a >= b
>>> a <= b
>>> a != b
二元运算函数
- np.mod(x,y) 元素级的模运算
- np.maximum(x,y)np.fmax() 元素级的最大值运算
- np.minimum(x,y)np.fmin() 元素级的最大值运算
- np.copysign(x,y) 将数组y中的各元素值的符号赋值给数组x对应元素
>>> a=np.arange(24).reshape((2,3,4))
>>> b=np.arange(24).reshape((2,3,4))
>>> np.maximum(a,b+10)
array([[[10, 11, 12, 13],
[14, 15, 16, 17],
[18, 19, 20, 21]],
[[22, 23, 24, 25],
[26, 27, 28, 29],
[30, 31, 32, 33]]])
>>> np.minimum(a,b+10)
>>> np.mod(a,b+1)
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]]], dtype=int32)

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)