numpy入门

numpy

将jupyter notebook转换为markdown文件之后,效果不是很好看,可以访问以下链接:
https://nbviewer.jupyter.org/github/huxiwen/python3_jupyter_note/blob/master/numpy%E6%95%B0%E6%8D%AE%E5%9F%BA%E7%A1%80.ipynb

import numpy
  • 查看numpy的版本
numpy.__version__
'1.13.3'
import numpy as np
np.__version__

'1.13.3'

Python List 的特点

L = [i for i in range(10)]
L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
L[5]
5
L[5] = 100
L

[0, 1, 2, 3, 4, 100, 6, 7, 8, 9]

python List比较灵活,可以list中可以有多种类型

  • 所以需要在识别list的过程中识别每一个元素的数据类型,操作的速度较慢
L[5] = 'Machine Learning'
L
[0, 1, 2, 3, 4, 'Machine Learning', 6, 7, 8, 9]
  • 使用array,array中的元素只运行是同一种的元素
import array
arr = array.array('i', [i for i in range(10)])
arr
array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[5] = 100
arr
array('i', [0, 1, 2, 3, 4, 100, 6, 7, 8, 9])
  • 将array中的一个元素赋值为其它类型的数据类型,将会报错
arr[5] = 'machine learing'
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-18-b1900297fd0e> in <module>()
----> 1 arr[5] = 'machine learing'


TypeError: an integer is required (got type str)

numpy.array

  • 以下同array的性质相似
nparr  = np.array([i for i in range(10)])
nparr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
nparr[5] = 100
nparr
array([  0,   1,   2,   3,   4, 100,   6,   7,   8,   9])
nparr[5]  = 'r'
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-23-0f68c6bffbe5> in <module>()
----> 1 nparr[5]  = 'r'


ValueError: invalid literal for int() with base 10: 'r'
nparr.dtype
dtype('int32')
nparr[5] = 3.14
  • 进行了隐式的数据转换
nparr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

其它创建numpy.array的方法

  • zeros方法生成元素为0的矩阵
  • ones方法生成全为1的矩阵
  • full方法可以进行填充一个值
np.zeros(10)
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])
np.zeros(10).dtype
dtype('float64')
np.zeros(10, dtype = int)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
np.zeros((3,5), dtype = int)
array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])
np.ones(10)
array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])
np.ones((3,5), dtype =int)
array([[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1]])
np.full((3,5), 10)
array([[10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10]])
np.full(shape=(3,5), fill_value=10)
array([[10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10]])

arange

  • 功能类似于range,生成一个范围内的有一定步长的数组
  • 但不同于range的是,在该方法中可以使用浮点型的数据作为输入
np.arange(0, 20, 2)
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
np.arange(0, 1, 0.1)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

linspace

np.linspace(0, 20, 10)
# 生成0-20之间的等差数列,10个数,包含0和20
array([  0.        ,   2.22222222,   4.44444444,   6.66666667,
         8.88888889,  11.11111111,  13.33333333,  15.55555556,
        17.77777778,  20.        ])
np.linspace(0, 20, 11)
array([  0.,   2.,   4.,   6.,   8.,  10.,  12.,  14.,  16.,  18.,  20.])

random

np.random.randint(0, 10, size = 10)
array([8, 3, 9, 6, 3, 7, 1, 6, 8, 3])
  • 因为用到的随机数都是伪随机数,所以在设定随机数种子之后,两次随机生成的数组是一样的
np.random.seed(1000)
np.random.randint(0, 10, size = 10)
array([3, 7, 7, 0, 1, 0, 9, 8, 9, 4])
np.random.seed(1000)
np.random.randint(0, 10, size = 10)
array([3, 7, 7, 0, 1, 0, 9, 8, 9, 4])
np.random.random()
0.8517471987138742
np.random.random(10)
array([ 0.57432043,  0.77250273,  0.9066506 ,  0.06032431,  0.02119571,
        0.90500709,  0.81729934,  0.08585602,  0.85544031,  0.24453192])
np.random.random((2,2))
array([[ 0.65856221,  0.47657574],
       [ 0.81632509,  0.24071122]])

nomal 生成指定均值,和方差的随机数

np.random.normal(loc=10,scale=100,size=10)
array([  37.77283981,   47.68117189,   18.13379194,  101.54615495,
         99.89578633,  -15.43312193,   24.73978704,  -54.9984287 ,
         70.59846046,  127.26178163])
  • 在命令后面加上?可以看到产生文档所需要的参数
np.random.normal?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值