数据分析 学习笔记03 | Python计算Numpy

一、Numpy优势

原生Python的List元素时分散存储,而Numpy中数组是连续内存块中存储。Numpy中的矩阵运算可以采用多线程的方式;
使用时避免使用隐式拷贝,而是直接采用就地操作模式:例如x*=2,而不是y=x*2.

二、 ndarray对象(N-dimensional array object)

创建数组:

import numpy as np
a = np.array([1, 2, 3])
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b[1,1]=10
print a.shape
print b.shape
print a.dtype
print b

结果:

(3L,)
(3L, 3L)
int32
[[ 1  2  3]
 [ 4 10  6]
 [ 7  8  9]]

三、结构数组dtype

类似于C语言中的struct,结构中的字段占用连续的内存空间,每个结构体占用的内存大小相同。
在Numpy中用dtype结构类型。

import numpy as np
persontype = np.dtype({
    'names':['name', 'age', 'chinese', 'math', 'english'],
    'formats':['S32','i', 'i', 'i', 'f']})
peoples = np.array([("ZhangFei",32,75,100, 90),("GuanYu",24,85,96,88.5),
       ("ZhaoYun",28,85,92,96.5),("HuangZhong",29,65,85,100)],
    dtype=persontype)
ages = peoples[:]['age']
chineses = peoples[:]['chinese']
maths = peoples[:]['math']
englishs = peoples[:]['english']
print np.mean(ages)
print np.mean(chineses)
print np.mean(maths)
print np.mean(englishs)

结果:

28.25
77.5
93.25
93.75

创建连续数组
两个函数创建的方式

x1 = np.arange(1,11,2)
x2 = np.linspace(1,9,5)

得到结果都是[1, 3, 5, 7, 9].
arange() 类似内置函数 range(),通过指定初始值、终值、步长来创建等差数列的一维数组,默认不包括终值。
linspace 代表线性等分向量。通过指定初始值、终值、元素个数来创建等差数列的一维数组,默认包括终值。

数组算数运算


x1 = np.arange(1,11,2)
x2 = np.linspace(1,9,5)
#加
print np.add(x1, x2)
#减
print np.subtract(x1, x2)
#乘
print np.multiply(x1, x2)
#除
print np.divide(x1, x2)
#求n次方
print np.power(x1, x2)
#取余
print np.remainder(x1, x2)

结果:

[ 2.  6. 10. 14. 18.]
[0. 0. 0. 0. 0.]
[ 1.  9. 25. 49. 81.]
[1. 1. 1. 1. 1.]
[1.00000000e+00 2.70000000e+01 3.12500000e+03 8.23543000e+05
 3.87420489e+08]
[0. 0. 0. 0. 0.]

统计运算

import numpy as np
a = np.array([[1,2,3], [4,5,6], [7,8,9]])
print np.amin(a)
print np.amin(a,0)
print np.amin(a,1)
print np.amax(a)
print np.amax(a,0)
print np.amax(a,1)

结果:

1
[1 2 3]
[1 4 7]
9
[7 8 9]
[3 6 9]

axis=0 轴是把元素看成了[1,4,7], [2,5,8], [3,6,9]三个元素,所以最小值为[1,2,3].

统计最大值与最小值之差

a = np.array([[1,2,3], [4,5,6], [7,8,9]])
print np.ptp(a)
print np.ptp(a,0)//竖着看
print np.ptp(a,1)//横着看

结果:


8
[6 6 6]
[2 2 2]

统计数组的百分位数 percentile()

a = np.array([[1,2,3], [4,5,6], [7,8,9]])
print np.percentile(a, 50)
print np.percentile(a, 50, axis=0)
print np.percentile(a, 50, axis=1)

结果:

5.0
[4. 5. 6.]
[2. 5. 8.]

此外,还有类似于median(), mean(), average(), 标准差std(), 方差var()等函数。其中,average函数可以设置参数来加权平均。

排序
可以指定排序方法:
sort(a, axis = -1, kind = ‘quicksort’ , order = None)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值