Python编程-随机数和随机数组生成, list和array的互相转换

在python编程中,随机数是一个某些时候非常有用的功能。

随机数的产生涉及numpy.random模块和random模块

 

本文可能无法涉及所有的情况,但是常用的情况都会简单说一下:

首先是random模块,注意引用import random

1 随机单个数字

 随机范围的整数 上界和下界  

import random
random.randint(12, 20)

# 14

 

随机的浮点数

# 随机浮点数 0-1直接
random.random()

# 0.3535694721335949



# 指定范围的浮点数
random.uniform(5, 10)  

# 8.169873914919975

 

可以设定满足的倍数关系,比如仅随机得到5的倍数的数字

random.randrange(0, 60, 5)

# 35

 

 

2. 随机数组

我们有时候需要一整个的随机数组成的数组,一个一个元素的随机很是麻烦,numpy.random模块提供了我们这样的操作

注意引用import numpy as np

随机浮点数数组 使用n控制数组大小,并且randn支持生成的数组满足正太分析

np.random.rand(6)
# array([0.08971799, 0.71386314, 0.23128967, 0.68115601, 0.51200213,
       0.15844753])

np.random.randn(6)
# array([ 0.70164022,  0.70766772, -0.13613055, -0.28591212, -1.44826154,
        0.56223578])


 

随机整数数组,需要size参数,否则是随机整数,而不是数组

np.random.randint(3)
# 1

np.random.randint(3,size=3)
# array([0, 2, 1])

可以(下界,上界,数目)来产生制定范围的数组

np.random.randint(5,7,4)
# array([6, 6, 5, 5])

 

 

3 随机抽样和打乱

这个功能就很实用了,用以在可迭代对象中随机抽选一个元素。打乱则是打乱原有对象的元素顺序。

抽样涉及random.sample   sample.choice函数

a = [1,2,3,4,5,6,7]
b="qwetuireyowi!@$%"
random.choices(a)
# [4]


random.choices(b)
# ['!']

抽样可以抽取多个样本,使用sample

a = [1,2,3,4,5,6,7]
b="qwetuireyowi!@$%"

random.sample(a,3)
[1, 5, 2]

random.sample(b,3)
['e', 'w', 'u']

 

打乱的话在random.shuffle  和 numpy.shuffle都可以是实现,两者允许互相操作:

# 操作list测试
a=[1,2,3,4,5,6,7]

random.shuffle(a)
# [1, 5, 7, 2, 6, 3, 4]

np.random.shuffle(a)
# [4, 1, 3, 6, 2, 7, 5]


# 操作numpy的array测试
c = numpy.range(4)
# [0 1 2 3]

random.shuffle(c)
#[4 1 3 2]

np.random.shuffle(c)
#[2 3 4 1]

 

4 list和array转换

有时候需要将array和list互相转换,这时候可以

# list转array
list1 = [1,2,3,4,5]
np.array(list1, dtype = int)  # dtype设定元素类型
# array([1, 2, 3, 4, 5])


# array转list
narray = np.zeros(5,dtype=int)
narray.tolist()
# [0, 0, 0, 0, 0]
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值