python数据分析(1)--numpy

简介

NumPy系统是Python的一种开源的数值计算扩展,可用来存储和处理大型矩阵。

numpy中的array

ndarray是numpy提供的一种数组,python的数组可以存放各种类型和对象,运行速度下降,而ndarray为了提高运行速度,底层用c实现,限定只能使用一种类型。ndarray有以下几个常用属性

属性 说明
shape 几行几列
ndim 数组维度
dtype 数组元素的类型
itemsize 数组中每个元素的大小
size 数组中元素的个数

下面分别打印以下这几个属性

list = [[1,2,3], [4,5,6], [7,8,9]]
# 新建一个元素类型为int64的数组
numpy_list = numpy.array(list, dtype=numpy.int64)
print(numpy_list.shape)
print(numpy_list.ndim)
print(numpy_list.dtype)
print(numpy_list.itemsize)
print(numpy_list.size)

结果如下

(3, 3)  
2  
int64
8
9

常用array

array 说明
numpy.zeros[row, col] 全零数组
numpy.ones[row, col] 全一数组
numpy.random.rand 生成随机数
numpy.random.randInt(low, hight) 生成指定范围内的随机整数
numpy.random.randn 正态分布随机数
numpy.random.choice() 从指定的数组中生成随机数
numpy.random.beta beta分布
print(numpy.zeros([2, 3]))
print(numpy.ones([3, 5]))
print(numpy.random.rand())
print(numpy.random.randint(1,2))
print(numpy.random.randn())
print(numpy.random.beta(1, 1, 2))
[[ 0.  0.  0.]
 [ 0.  0.  0.]]
[[ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]]
0.6256807713479122
1
1.1866001408917326
[ 0.68579746  0.93474434]

常用操作

以下的list都是numpy的array

函数 说明
numpy.arange(low, high) 产生等差数列,范围[1,10)
list.reshape([row, col]) 将数组转换成指定行列的数组
numpy.exp(list) 指数
numpy.sin(list) 三角函数
numpy.log(list) 对数
list.sum(axis) 求和,axis指对数组深入的程度
list.max(axis) 最大值
list.min(axis) 最小值
list1+list2 数组元素相加
list1-list2
list1*list2
list1/list2
numpy.dot() 矩阵点乘
numpy.concatenate(list1, list2) 追加数组
numpy.vstack(list1, list2)
numpy.hstack(list1, list2)
munpy.split(list, n) 将数组切分成n份
numpy.copy(list) 拷贝array

测试程序

list = numpy.arange(1, 9)
print("等差数列")
print(list)
#-1为默认值
print("转换多维数组")
print(list.reshape(2,-1))
print("指数计算")
print(numpy.exp(list.reshape(2, -1)))
l = [[1,2,3], [4,5,6], [7,8,9]]
numpy_list = numpy.array(l)
print("求和计算")
# 深度为1的结果
print("axis=0")
print(numpy_list.sum(axis=0))
# 深度为2的结果
print("axis=1")
print(numpy_list.sum(axis=1))

print("数组相加")
list1 = numpy.array([[1,2,3], [4,5,6]])
list2 = numpy.array([[2,3,4], [3,4,5]])
print(list1 + list2)

输出结果

等差数列
[1 2 3 4 5 6 7 8]
转换多维数组
[[1 2 3 4]
 [5 6 7 8]]
指数计算
[[  2.71828183e+00   7.38905610e+00   2.00855369e+01   5.45981500e+01]
 [  1.48413159e+02   4.03428793e+02   1.09663316e+03   2.98095799e+03]]
求和计算
axis=0
[12 15 18]
axis=1
[ 6 15 24]
数组相加
[[ 3  5  7]
 [ 7  9 11]]

矩阵操作和线性方程组

函数 说明
numpy.eye() 生成单位矩阵
inv(list) 求逆矩阵
list.transpose() 求转置矩阵
det(list) 求矩阵的行列式
eig(list) 求特征值和特征向量,返回值第一个元组为特征值,第二个元组是特征向量
solve(list, y) 求解方程组

测试程序

#encoding-utf8

import numpy
from numpy.linalg import *

def main():
    print("单位矩阵")
    print(numpy.eye(3))
    
    list = numpy.array([[3, 5], [7, 9]])
    print("逆矩阵")
    print(inv(list))
    print("转置矩阵")
    print(list.transpose())
    print("矩阵行列式")
    print(det(list))
    print("特征值和特征向量")
    print(eig(list))

    print("求解二元方程: 3x+7y=2, 5x+9y=5")
    y = numpy.array([[2], [5]])
    print(solve(list, y))
    pass
    
if __name__ == '__main__':
    main()

输出结果

单位矩阵
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]
逆矩阵
[[-1.125  0.625]
 [ 0.875 -0.375]]
转置矩阵
[[3 7]
 [5 9]]
矩阵行列式
-8.0
特征值和特征向量
(array([ -0.63324958,  12.63324958]), array([[-0.80897568, -0.46067886],
       [ 0.58784211, -0.88756689]]))
求解二元方程
[[ 0.875]
 [-0.125]]

其它

函数 说明
numpy.fft.fft() FTT计算
numpy.corrcoef() 计算相关系数
numpy.poly1d() 生成一元多次函数

测试程序

#encoding-utf8

import numpy

def main():
    print("FFT")
    print(numpy.fft.fft(numpy.ones([1,6])))
    print("相关系数")
    print(numpy.corrcoef([1,0,1], [0,1,0]))
    print("生成一元多次函数")
    print(numpy.poly1d([1,2,3]))
    pass
    
if __name__ == '__main__':
    main()

输出结果

FFT
[[ 6.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]]
相关系数
[[ 1. -1.]
 [-1.  1.]]
生成一元多次函数
   2
1 x + 2 x + 3

小结

以上就是numpy简单的使用,numpy主要用于对矩阵的操作和变换,对矩阵计算简化过程,可以提供很大的便利。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352