【Python】Python数据分析基础技术03

一、numpy
关键词:开源 数据计算扩展

主要是用于处理 Python在数据、数值处理中速度比较慢的问题。
功能:ndarray 多维操作 线性代数
官网:http://www.numpy.org/

下载了Anaconda之后,很多我们常用的库已经是安装好的。
打开Anaconda Prompt,输入conda list,就会发现已经拥有了很多库啦。

除此之外,若import numpy报错,可参考一下知乎大神们的回答:
https://www.zhihu.com/question/28132194

在Python中,有一个数据类型 list,在list中,我们可以存放多种不同类型的数据,但当我们数据量越来越大的时候,由于Python每次都需要去判断一下数据的类型,运算速度就会很慢了。

numpy的ndarray中,每个只可以拥有一种数据类型

#-*- coding:utf-8 -*-

import numpy as np
def main():
    lst = [[1,3,5],[2,4,6]]
    print(type(lst))
    np_lst = np.array(lst)
    print(type(np_lst))

if __name__ == "__main__":
    main()

输出结果:
<class 'list'>
<class 'numpy.ndarray'>

简单列举ndarray中的数据类型:
bool,int,int8,int16,int32,int64,int128,unit8,unit16,unit32,unit64,unit128,float16,float32,float64,complex64/128,str
上边的u,就代表unsigned

ndarray是numpy最基础的数据结构,这个数据结构的属性:

lst = [[1,3,5],[2,4,6]]
np_lst = np.array(lst,dtype=np.float)
print(np_lst.shape)  #该数组的形状
打印结果:(2, 3)
print(np_lst.ndim)  #该数组的维度
打印结果:2
print(np_lst.dtype)
打印结果:float64
print(np_lst.itemsize)
打印结果:864位占8个字节)
print(np_lst.size)
打印结果:6(一共6个元素)
常见数组
    print(np.zeros([2,4]))
    print(np.ones([3,5]))
    打印结果:
    [[ 0.  0.  0.  0.]
    [ 0.  0.  0.  0.]]
[[ 1.  1.  1.  1.  1.]
[ 1.  1.  1.  1.  1.]
[ 1.  1.  1.  1.  1.]]


print(np.random.rand(2,4))
打印结果:24列的随机数(0~1之间的随机数)
[[ 0.51822084  0.1033368   0.10229034  0.47420062]
 [ 0.06186117  0.65672721  0.72348707  0.76551658]]
 print(np.random.rand())
 打印结果:0.92446879327  一个随机数

print(np.random.randint(1,10))
#打印一个1~10的整数

print(np.random.randint(1,10.3))
#打印三个1~10之间的整数  [8,3,7]

print(np.random.randn())
#打印一个标准的正太分布随机数
print(np.random.randn(2,3))
#生成23列的正太分布随机数
print(np.random.chioce([10,20,30]))
#生成的随机数,只能在10 20 30 中间进行选择
print(np.random.beta(1,10,100))
#生成100个从1~10的随机数
……………………还有许多
numpy常见操作
print(np.arange(1,11))
[ 1  2  3  4  5  6  7  8  9 10]

print(np.arange(1,11).reshape([2,5]))
等价于
print(np.arange(1,11).reshape([2,-1]))
会得到一个23列的ndarray
lst = np.arange(1,11).reshap([2,-1])
print(np.exp(lst))  #自然指数
print(np.exp2(lst)) #自然指数的平方
print(np.sqrt(lst)) #开方
print(np.sin(lst))  #正弦
print(np.log(lst))  #对数
lst = np.array([[[1,2,3,4],
                     [4,5,6,7]],
                    [[7,8,9,10],
                     [10,11,12,13]]])
    print(lst.sum())   #112
    print(lst.sum(axis=2))  #这个axis最大是维度减一,这个是用来判断,我们执行操作的维度。
    举个例子,上面,如果axis是0的话,就是最外层的数组进行相加,即[[1,2,3,4],[4,5,6,7]][[7,8,9,10],[10,11,12,13]]进行相加,得到的结果是:
    [[ 8 10 12 14]
     [14 16 18 20]]
    如果axis是1的话,就再深入一层进行相加,即[1,2,3,4],[4,5,6,7],[7,8,9,10],[10,11,12,13]进行相加,得到的结果是
    [[ 5  7  9 11]
     [17 19 21 23]]
    如果axis是2的话,就是每个[]内的元素进行相加,得到的结果是[[10 22] [34 46]]
    除了sum还可以有max,min等
    lst1 = np.array([1,2,3,4])
    lst2 = np.array([5,10,15,20])
    print(np.dot(lst1.reshape([2,2]),lst2.reshape([2,2])))     点乘
  1*5+2*15  1*10+2*20
  3*5+4*15  3*10+4*20
    还可以进行两个ndarray的加减乘除等等运算    

在python中,两个list相加表示追加,在numpy中,也可以实现追加,要使用函数concatenate
print(np.concatenate((lst1,lst2),axis=0))
可以实现两个ndarray的追加
[ 1 2 3 4 5 10 15 20]
两个list实现上下追加,使用vstack
print(np.vstack(lst1,lst2))
[[ 1 2 3 4]
[ 5 10 15 20]]
hstack实现的效果和concatenate一样
[ 1 2 3 4 5 10 15 20]

print(np.split(lst1,2)) 把lst1分成2份
[array([1, 2]), array([3, 4])]
print(np.copy(lst1)) #拷贝

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值