Python 之 NumPy 随机函数和常用函数

  • 最开始,我们先导入 numpy 库。
import numpy as np

一、随机函数

函数名功能参数使用(int a,b,c,d)
rand(int1,[int2,[int3,]])生成(0,1)均匀分布随机数(a),(a,b),(a,b,c)
randn(int1,[int2,[int3,]])生成标准正态分布随机数(a),(a,b),(a,b,c)
randint(low[,hight,size,dtype])生成随机整数(a,b),(a,b,c),(a,b,(c,d))
sample(size)生成[0,1)随机数(a),((a,b)),((a,b,c))

1. numpy.random.rand(d0,d1,…,dn)

np.random.rand(4,2)
#array([[0.02533197, 0.80477348],
#       [0.85778508, 0.01261245],
#       [0.04261013, 0.26928786],
#       [0.81136377, 0.34618951]])
np.random.rand(2,2,3)
#array([[[0.01820147, 0.5591452 , 0.05975028],
#        [0.09208771, 0.96067587, 0.87031724]],
#
#       [[0.32644706, 0.9580549 , 0.94756885],
#        [0.57613453, 0.59642938, 0.62449385]]])

2. numpy.random.randn(d0,d1,…,dn)

from matplotlib import pyplot as plt
a = np.random.randn(10)
print(a)
plt.hist(a)
#[ 0.42646668 -1.40306793 -0.05431918  0.03763756  1.7889215   0.25540288
# -1.60619811 -2.21199667 -0.92209721  0.47669523]
#(array([1., 1., 1., 1., 0., 2., 3., 0., 0., 1.]),
# array([-2.21199667, -1.81190485, -1.41181303, -1.01172122, -0.6116294 ,
#        -0.21153758,  0.18855423,  0.58864605,  0.98873787,  1.38882969,
#         1.7889215 ]),

Python 之 NumPy 随机函数和常用函数

3. numpy.random.normal()

numpy.random.normal(loc=0.0, scale=1.0, size=None)

4. numpy.random.randint()

numpy.random.randint(low, high=None, size=None, dtype=’l’)
np.random.randint(1,size=5) 
#array([0, 0, 0, 0, 0])
np.random.randint(2,10,size=5) 
#array([7, 6, 7, 8, 3])
np.random.randint(2,10,size=(2,5)) 
#array([[7, 7, 2, 7, 4],
#       [5, 8, 6, 9, 7]])
np.random.randint(1,5)
#2
np.random.randint(-5,5,size=(2,2))
#array([[-4, -5],
#       [ 1,  3]])

5. numpy.random.sample

numpy.random.sample(size=None)
np.random.sample((2,3))
np.random.sample((2,2,3))
#array([[[0.7686855 , 0.70071112, 0.24265062],
#        [0.63907407, 0.76102216, 0.66424632]],
#
#       [[0.40679315, 0.73614372, 0.64102261],
#        [0.97843216, 0.52552309, 0.44970841]]])

Type Markdown and LaTeX: α2

6. 随机种子np.random.seed()

np.random.seed(2)
L1 = np.random.randn(3, 3)
L2 = np.random.randn(3, 3)
print(L1)
print("-"*10)
print(L2)
#[[-0.41675785 -0.05626683 -2.1361961 ]
# [ 1.64027081 -1.79343559 -0.84174737]
# [ 0.50288142 -1.24528809 -1.05795222]]
----------
#[[-0.90900761  0.55145404  2.29220801]
# [ 0.04153939 -1.11792545  0.53905832]
# [-0.5961597  -0.0191305   1.17500122]]
np.random.seed(1)
L1 = np.random.randn(3, 3)
np.random.seed(1)
L2 = np.random.randn(3, 3)
print(L1)
print("-"*10)
print(L2)
#[[ 1.62434536 -0.61175641 -0.52817175]
# [-1.07296862  0.86540763 -2.3015387 ]
# [ 1.74481176 -0.7612069   0.3190391 ]]
#----------
#[[ 1.62434536 -0.61175641 -0.52817175]
# [-1.07296862  0.86540763 -2.3015387 ]
# [ 1.74481176 -0.7612069   0.3190391 ]]

7. 正态分布 numpy.random.normal

numpy.random.normal(loc=0.0, scale=1.0, size=None)
a = np.random.normal(0, 1, (3, 2))
print(a)
print('-'*20)
b = np.random.normal(1, 3, (3, 2))
print(b)
#[[-0.26905696  2.23136679]
# [-2.43476758  0.1127265 ]
# [ 0.37044454  1.35963386]]
#--------------------
#[[ 2.50557162 -1.53264111]
# [ 1.00002928  2.62705772]
# [ 0.05947541  3.31303521]]

二、数组的其他函数

函数名称描述说明
resize返回指定形状的新数组。
append将元素值添加到数组的末尾。
insert沿规定的轴将元素值插入到指定的元素前。
delete删掉某个轴上的子数组,并返回删除后的新数组。
argwhere返回数组内符合条件的元素的索引值。
unique用于删除数组中重复的元素,并按元素值由大到小返回一个新数组。
sort()对输入数组执行排序,并返回一个数组副本
argsort沿着指定的轴,对输入数组的元素值进行排序,并返回排序后的元素索引数组

1. numpy.resize()

numpy.resize(arr, shape)
a = np.array([[1,2,3],[4,5,6]])
print('a数组:',a)
print('a数组形状:',a.shape)
#3a数组: [[1 2 3]
# [4 5 6]]
#a数组形状: (2, 3)
b = np.resize(a,(3,3))
b
#array([[1, 2, 3],
#       [4, 5, 6],
#       [1, 2, 3]])
a
#array([[1, 2, 3],
#       [4, 5, 6]])
a.resize((3,3),refcheck=False)
a
#array([[1, 2, 3],
#       [4, 5, 6],
#       [0, 0, 0]])

2. numpy.append()

numpy.append(arr, values, axis=None)
a = np.array([[1,2,3],[4,5,6]])
print (np.append(a, [7,8,9]))
​#[1 2 3 4 5 6 7 8 9]
print (np.append(a, [[7,8,9]],axis = 0))
#[[1 2 3]
# [4 5 6]
# [7 8 9]]
print (np.append(a, [[5,5,5],[7,8,9]],axis = 1))
#[[1 2 3 5 5 5]
# [4 5 6 7 8 9]]

3. numpy.insert()

numpy.insert(arr, obj, values, axis)
a = np.array([[1,2],[3,4],[5,6]])
print (np.insert(a,3,[11,12]))
#[ 1  2  3 11 12  4  5  6]
print (np.insert(a,1,[11],axis = 0))
​#[[ 1  2]
# [11 11]
# [ 3  4]
# [ 5  6]]
print (np.insert(a,1,11,axis = 1))
#[[ 1 11  2]
# [ 3 11  4]
# [ 5 11  6]]

4. numpy.delete()

numpy.delete(arr, obj, axis)
a = np.arange(12).reshape(3,4)
print(a)
print(np.delete(a,5))
​#[[ 0  1  2  3]
# [ 4  5  6  7]
# [ 8  9 10 11]]
#[ 0  1  2  3  4  6  7  8  9 10 11]
print(np.delete(a,1,axis = 1))
print(a)​
print(np.delete(a,[1,2],axis = 0))
#[[ 0  1  2  3]
# [ 4  5  6  7]
# [ 8  9 10 11]]
#[[0 1 2 3]]

5. numpy.argwhere()

x = np.arange(6).reshape(2,3)
x
#array([[0, 1, 2],
#       [3, 4, 5]])
print(x)
y=np.argwhere(x>1)
print("-"*10)
print(y,y.shape)
#[[0 1 2]
# [3 4 5]]
#----------
#[[0 2]
# [1 0]
# [1 1]
# [1 2]] (4, 2)

6. numpy.unique()

numpy.unique(arr, return_index, return_inverse, return_counts)
a = np.array([5,2,6,2,7,5,6,8,2,9])
print (a)
uq = np.unique(a)
print(uq)
#[5 2 6 2 7 5 6 8 2 9]
#[2 5 6 7 8 9]
print("a:",a)
u,indices = np.unique(a, return_index = True)
print(u)
print('-'*20)
print(indices)
#a: [5 2 6 2 7 5 6 8 2 9]
#[2 5 6 7 8 9]
#--------------------
#[1 0 2 4 7 9]
ui,indices = np.unique(a,return_inverse = True)
print (ui)
print('-'*20)
 print (indices)
print("a:",a)
#[2 5 6 7 8 9]
#--------------------
#[1 0 2 0 3 1 2 4 0 5]
uc,indices = np.unique(a,return_counts = True)
print (uc)
print (indices)
#a: [5 2 6 2 7 5 6 8 2 9]
#[2 5 6 7 8 9]
#[3 2 2 1 1 1]

7. numpy.sort()

numpy.sort(a, axis, kind, order)
a = np.array([[3,7,5],[6,1,4]]) 
print('a数组是:', a)
print('排序后的内容:',np.sort(a))
a
#a数组是: [[3 7 5]
# [6 1 4]]
#排序后的内容: [[3 5 7]
# [1 4 6]]
#array([[3, 7, 5],
#       [6, 1, 4]])
print(np.sort(a, axis = 0))
#[[3 1 4]
# [6 7 5]]
print(np.sort(a, axis = 1))
#[[3 5 7]
# [1 4 6]]
dt = np.dtype([('name',  'S10'),('age',  int)])
a = np.array([("raju",21),("anil",25),("ravi",  17),  ("amar",27)], dtype = dt) 
print(a)
print('--'*10)
print(np.sort(a, order = 'name'))
#[(b'raju', 21) (b'anil', 25) (b'ravi', 17) (b'amar', 27)]
#--------------------
#[(b'amar', 27) (b'anil', 25) (b'raju', 21) (b'ravi', 17)]

8. numpy.argsort()

a = np.array([90, 29, 89, 12]) 
print("原数组:",a) 
#原数组: [90 29 89 12]
sort_ind = np.argsort(a) 
print("打印排序元素索引值:",sort_ind) 
#打印排序元素索引值: [3 1 2 0]
sort_a = a[sort_ind] 
print("打印排序数组") 
for i in sort_ind: 
    print(a[i],end = " ")  
a[sort_ind]
#打印排序数组
#12 29 89 90 
#array([12, 29, 89, 90])

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年3月11日
下一篇 2023年3月11日

相关推荐