使用Python生成数据

使用python原生函数

使用range函数可创建一个整数列表

list = range(10) # 从0开始到10 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i for i in list])
print([i*1 for i in list]) # 使用for循环

range(1, 11)     # 从 1开始到11: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range(0, 30, 5)  # 步长为 2: [0, 2, 4, 6, 8]
range(0, -10, -1) # 负数:[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
range(0) # 空数组 []
range(1, 0) # 空数组 []

使用random函数

import random
print( random.random() )             # 产生 0 到 1 之间的随机浮点数

random.randint(1,10)              # 产生 1 到 10 的一个整数型随机数
random.uniform(1.1,5.4)           # 产生  1.1 到 5.4 之间的随机浮点数,区间可以不是整数
random.choice('abcdefghijklmn')   # 从序列中随机选取一个元素
random.randrange(0, 100, 2)       # 生成从1到100的间隔为2的随机整数[0-100)的偶数
random.shuffle([1,3,5,6,7])       # 将序列中的元素顺序打乱

使用numpy

使用np.arange()

类似于range,通过指定开始值,终值和步长来创建表示等差数列的一维数组
array = np.arange(10) # 
list = range(10)
print(list)  
print(array) #  [0 1 2 3 4 5 6 7 8 9]
# ! 2个函数生成的类型不同,但用法类似
print(type(array))
print(type(list)) 
print(len(array)) # 
print(len(list))

print(np.arange(1, 11))  # [ 1  2  3  4  5  6  7  8  9 10]
print(np.arange(1, 2, 0.1)) # [1. 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9] 步长可用小数

使用 np.linspace()

该函数第三个参数指定的是元素个数,它表示给定起始值和终点值以及元素个数,生成一个一维的等差数列。
含有参数endpoint布尔值,默认为True表示包含终值,设定为False表示不包含终值。
np.linspace(0,1,10)
# [ 0.,  0.11111111,  0.22222222,  0.33333333,  0.44444444,0.55555556,  0.66666667,  0.77777778,  0.88888889,  1.        ])

np.linspace(0,1,10,endpoint = False)  # [ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]

#生成等比数列 基数默认为10
np.logspace(0,4,3) #  [1.e+00 1.e+02 1.e+04]

np.logspace(0,4,3,base = 2) # [ 1.  4. 16.] 起点为2^0 = 1,终点为2^4 = 16,一共按照等比数列生成3个点

创建指定的形状和类型数组

# 只分配数组所使用的内存,不对数据初始化起作用
np.empty(4,np.int32)         
np.empty((2,3),np.int32)

# 
np.ones(4)                   # [1. 1. 1. 1.]
np.ones((2,3)) 
np.ones(4, dtype = np.bool)  # [ True  True  True  True]
# 
np.zeros(4, dtype = np.bool) # [False False False False]
np.zeros(4)                  # [0. 0. 0. 0.]

# 生成初始化为指定值的数组
np.full(4,np.pi)
np.full((2,3), -1)

# 创建参数形状相同的数组
a = np.arange(6).reshape(2,3)
np.zeros_like(a)             # [[0 0 0][0 0 0]]
np.ones_like(a))             # [[1 1 1][1 1 1]]

# 从指定的函数中生成数组,第一个参数是函数名称,第二个参数是数组形状

np.fromfunction(lambda a, b : a == b, (3, 3)) 
# [[ True False False]
# [False  True False]
# [False False  True]]

np.fromfunction(lambda i:i%7 +1,(10,)) # [ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  1.,  2.,  3.]

使用随机函数

# 随机数是由随机种子根据一定的计算方法计算出来的数值。
# 只要计算方法一定,随机种子一定,那么产生的随机数就不会变

np.random.seed(123)

np.random.rand(4)                # 均匀分布随机数组 0-1浮点数
np.random.rand(2,3)              # 产生2*3均匀分布随机数组
np.random.randint(1,100,[5,5])   # (1,100)以内的5行5列随机整数
np.random.random(4)              # (0,1)以内4个随机浮点数
np.random.choice(10)             # [0,10)内随机选择一个数
np.random.choice([1,2,3,4,5],(2,3))


edgardeng
83 声望3 粉丝