Python数据分析

Python数据分析 知识量:13 - 56 - 232

2.4 创建随机数组><

0~1之间的随机数组- 2.4.1 -

使用NumPy的random模块可以创建随机数组。random模块包含多个函数可以创建不同的随机数组。

创建0~1之间的随机数组。可以使用rand()函数实现:

import numpy as np
arr=np.random.rand(5)  # 一维随机数组
print(arr)
arr = np.random.rand(3,4)  # 二维随机数组
print(arr)

运行结果为:

[0.46544494 0.62108366 0.71779838 0.94261459 0.33298433]
[[0.68256465 0.01680971 0.67135205 0.94591189]
 [0.73568185 0.25613694 0.20121316 0.15291197]
 [0.20712644 0.92524952 0.10435183 0.13757869]]

如上所示,如果传递给rand()函数的参数是一对值,则创建的是指定行列数的数组。

正态分布数组- 2.4.2 -

可以使用randn()函数创建满足正态分布的数组。

import numpy as np
arr=np.random.randn(5)
print(arr)
arr = np.random.randn(3,4)  # 指定行列的二维数组
print(arr)

运行结果为:

[ 1.66049353  0.99395355 -0.87486944 -0.90558717 -0.54306976]
[[-0.64591109 -0.48571158  0.42669026 -0.80514057]
 [-1.0030219   1.15020116  1.25304103 -0.33095947]
 [ 1.87539842  0.02117257 -0.91167654  1.03062793]]

指定范围的随机数组- 2.4.3 -

可以使用randint()函数创建指定范围的随机数组。其主要包括4个参数:

  • low 表示取值范围的最小值,包含在内;

  • hige 表示取值范围的最大值,不包含在内,本项可选;

  • size 表示数组的大小,本项可选;

  • dtype 表示元素的数据类型,本项可选。

import numpy as np
arr=np.random.randint(1,5,6)  # low=1,hige=5,size=6
print("arr1:\n",arr)
arr = np.random.randint(2,6)  # low=2,hige=6,size=1(默认)
print("arr2:\n",arr)
arr = np.random.randint(2,size=6)  # low=0(默认),high=2,size=6
print("arr3:\n",arr)
arr = np.random.randint(6)  # low=0(默认),hige=6,size=1(默认)
print("arr4:\n",arr)
arr = np.random.randint(6,size=(3,4))  # low=0(默认),hige=6,size=(3,4)
print("arr5:\n",arr)

运行结果为:

arr1:
 [2 2 1 2 3 1]
arr2:
 5
arr3:
 [1 1 1 0 0 0]
arr4:
 3
arr5:
 [[2 4 5 0]
 [2 4 5 5]
 [3 5 2 2]]

随机选取数组- 2.4.4 -

可以使用choice()函数实现从已知数组中随机选取数组。其第一个参数可以是传入的数组,也可以是一个整数。当为整数时,就从函数range()中采样。

import numpy as np
arr=np.arange(1,10)
print("arr:\n",arr)
arr1 = np.random.choice(arr)  # 随机选取一个值(默认)
print("arr1:\n",arr1)
arr2 = np.random.choice(arr,3)  # 随机选取3个值
print("arr2:\n",arr2)
arr3 = np.random.choice(arr,(2,3))  # 随机选取2行3列组成数组
print("arr3:\n",arr3)
arr4 = np.random.choice(5)  # 调用range(5),从中随机选取一个值
print("arr4:\n",arr4)

运行结果为:

arr:
 [1 2 3 4 5 6 7 8 9]
arr1:
 5
arr2:
 [1 7 8]
arr3:
 [[2 4 2]
 [5 1 6]]
arr4:
 4

打乱数组元素排序- 2.4.5 -

可以使用shuffle()函数打乱数组元素排序,实现洗牌效果。

import numpy as np
arr=np.arange(10)
print(arr)
np.random.shuffle(arr)  # 第一次洗牌
print(arr)
np.random.shuffle(arr)  # 第二次洗牌
print(arr)

运行结果为:

[0 1 2 3 4 5 6 7 8 9]
[6 2 5 1 7 8 4 3 9 0]
[2 0 8 4 6 7 5 1 9 3]

注意:shuffle()函数会直接改变原数组排序,不会创建新数组。