numpy库

import numpy as np

a=[[0,1,2,3,4],
   [9,8,7,6,5]]
b=[[0 1 2 3 4]
   [9 8 7 6 5]]
a是我们常见的逗号分隔数据的列表,b就是一个np类型
b != a
b=np.array(a)
import numpy as np

a=[[0,1,2,3,4],
   [9,8,7,6,5]] 
b=np.array(a)  #生成一个ndarray数组,这个数组由空格分隔
'''
[[0 1 2 3 4]
 [9 8 7 6 5]]
'''

a.tolist() 将数组向列表转换

import numpy as np

a=[[0,1,2,3,4],
   [9,8,7,6,5]] 
b=np.array(a)  

print(b.tolist())
'''
[[0, 1, 2, 3, 4], [9, 8, 7, 6, 5]]
'''
import numpy as np

a=np.full((2,3,4),25,dtype=np.int32)

print(a)
'''
[[[25 25 25 25]
  [25 25 25 25]
  [25 25 25 25]]

 [[25 25 25 25]
  [25 25 25 25]
  [25 25 25 25]]]
'''

print(a.tolist())
'''
[[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]], 
 [[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]]]
'''

1. ndarray数组的创建方法

在这里插入图片描述

import numpy as np
x=np.array([0,1,2,3])
print(x)
x=np.array([(0,1),[2,3],(0.3,0.4)])
print(x)

输出结果如下:
[0 1 2 3]

[[0.  1. ]
 [2.  3. ]
 [0.3 0.4]]

2、使用numpy中函数创建ndarray数组

np.arange(n):类似range函数,返回ndarray类型,元素从0到n-1
np.eye(n):创建一个正方的n*n单位矩阵,对角线为1,其余为0

np.ones(shape):根据shape生成一个全1数组
np.zeros(shape):根据shape生成一个全0 数组
np.full(shape,number):生成一个每个元素值都是number的数组

np.ones_like(a):根据数组a的形状生成一个全1数组
np.zeros_like(a):根据数组a的形状生成一个全0数组
np.full_like(a,number):根据数组a的形状生产一个元素值都是number的数组

根据以上的方法生成的数组里面的数据可能是浮点型,所以你只需要添加一个dtype=np.int32参数即可变成int型

np.arange(4) 
'''
[0 1 2 3]
'''

np.eye(5)  
'''
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
'''
np.ones((2,3,4))  
'''
[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]
'''

在这里插入图片描述
在这里插入图片描述

np.ones_like(a):根据数组a的形状生成一个全1数组
np.zeros_like(a):根据数组a的形状生成一个全0数组
np.full_like(a,number):根据数组a的形状生产一个元素值都是number的数组
在这里插入图片描述

3、使用numpy中其他函数创建ndarray数组

np.linspace():根据起止数据等间距地填充数据,形成数组
np.concatenate():将两个或多个数组合并成一个新的数组

import numpy as np

a=np.linspace(1,10,4)
print(a)

b=np.linspace(1,10,4,endpoint=False)#endpoint=false不显示最后一位数字
print(b)

c=np.concatenate((a,b))
print(c)

输出结果如下:
[ 1.  4.  7. 10.]

[1.   3.25 5.5  7.75]

[ 1.    4.    7.   10.    1.    3.25  5.5   7.75]

2. ndarray数组的变换

1.维度的变换
(1)a.reshape(shape) 不改变元数组,返回新维度的数组
在这里插入图片描述
(2)a.resize(shape) 改变元数组,无返回值
在这里插入图片描述
在这里插入图片描述
(3)关于"a.reshape(-1)"

import numpy as np
c=np.array([[1,2,3],[4,5,6]])
print('两行三列')
print(c.reshape(2,3))
[[1 2 3]
 [4 5 6]]

print('三行两列')
print(c.reshape(3,2))
[[1 2]
 [3 4]
 [5 6]]

print('我也不知道是几行,反正就是1列')
print(c.reshape(-1,1))
[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]

print('我也不知道是几列,反正就是1行')
print(c.reshape(1,-1))
[[1 2 3 4 5 6]]

print('不分行列,就是一串数字')
print(c.reshape(-1))
[1 2 3 4 5 6]
z = np.array([[1, 2, 3, 4],  [5, 6, 7,8],  [9, 10, 11, 12],  [13, 14, 15, 16]])
print(z.reshape(-1)) 
输出:[ 1 2  3  4  5  6  7  8  9 10 11 12 13 14 15 16] 

(4)a.flatten() 对数组降维,变为一维数组,不改变原数组

在这里插入图片描述

import numpy as np
z = np.array([[1, 2, 3, 4],  [5, 6, 7,8],  [9, 10, 11, 12],  [13, 14, 15, 16]])
print(z.reshape(-1)) 
print(z.flatten())
print(z.ravel())


'''
输出都是
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
'''

(5)np.ravel()

import numpy as np
z = np.array([[1, 2, 3, 4],  [5, 6, 7,8],  [9, 10, 11, 12],  [13, 14, 15, 16]])
print(z.reshape(-1)) 
print(z.flatten())
print(z.ravel())


'''
输出都是
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
'''

(6)np.vstack()

import numpy as np

a=[1, 2, 3, 11, 22, 33, 44, 55, 66]
print(np.vstack(a))

'''
[[ 1]
 [ 2]
 [ 3]
 [11]
 [22]
 [33]
 [44]
 [55]
 [66]]
'''
import numpy as np

a=np.array([1,2,3])
b=np.array([11,22,33])
c=np.array([44,55,66])
feature1=np.concatenate((a,b,c),axis=0)
feature2=np.vstack(feature1)
print(feature1)
print(feature2)

'''
[ 1  2  3 11 22 33 44 55 66]
[[ 1]
 [ 2]
 [ 3]
 [11]
 [22]
 [33]
 [44]
 [55]
 [66]]
'''

(7)swapaxes(ax1,ax2)将数组n个维度中两个维度进行调换
在这里插入图片描述
(8)np的拼接

import numpy as np

a=np.array([1,2,3])
b=np.array([11,22,33])
c=np.array([44,55,66])
feature=np.concatenate((a,b,c),axis=0)
print(feature)
'''[ 1  2  3 11 22 33 44 55 66]
这是一维数组的拼接
'''


a=np.array([[1,2,3],[4,5,6]])
b=np.array([[11,21,31],[7,8,9]])
feature=np.concatenate((a,b),axis=0)
print(feature)
'''
[[ 1  2  3]
 [ 4  5  6]
 [11 21 31]
 [ 7  8  9]]
二维列拼接
'''

a=np.array([[1,2,3],[4,5,6]])
b=np.array([[11,21,31],[7,8,9]])
feature=np.concatenate((a,b),axis=1)  #axis=1表示对应行的数组进行拼接
print(feature)
'''
[[ 1  2  3 11 21 31]
 [ 4  5  6  7  8  9]]
二维行拼接
'''

(9)set()函数

labels=[0, -1, 0, 1, -1, 1, 0, 1, 2, -1, 1, 0, 1, 1, 3, -1, -1, 3, -1, 1, 1, -1, 1, 3, 4, -1, 1, 1, 2, 0, 2, 2, -1, 0, 1, 0, 0, 0, 1, 3, -1, 0, 1, 1, 0, 0, 2, -1, 1, 3, 1, -1, 3, -1, 3, 0, 1, 1, 2, 3, 3, -1, -1, -1, 0, 1, 2, 1, -1, 3, 1, 1, 2, 3, 0, 1, -1, 2, 0, 0, 3, 2, 0, 1, -1, 1, 3, -1, 4, 2, -1, -1, 0, -1, 3, -1, 0, 2, 1, -1, -1, 2, 1, 1, 2, 0, 2, 1, 1, 3, 3, 0, 1, 2, 0, 1, 0, -1, 1, 1, 3, -1, 2, 1, 3, 1, 1, 1, 2, -1, 5, -1, 1, 3, -1, 0, 1, 0, 0, 1, -1, -1, -1, 2, 2, 0, 1, 1, 3, 0, 0, 0, 1, 4, 4, -1, -1, -1, -1, 4, -1, 4, 4, -1, 4, -1, 1, 2, 2, 3, 0, 1, 0, -1, 1, 0, 0, 1, -1, -1, 0, 2, 1, 0, 2, -1, 1, 1, -1, -1, 0, 1, 1, -1, 3, 1, 1, -1, 1, 1, 0, 0, -1, 0, -1, 0, 0, 2, -1, 1, -1, 1, 0, -1, 2, 1, 3, 1, 1, -1, 1, 0, 0, -1, 0, 0, 3, 2, 0, 0, 5, -1, 3, 2, -1, 5, 4, 4, 4, -1, 5, 5, -1, 4, 0, 4, 4, 4, 5, 4, 4, 5, 5, 0, 5, 4, -1, 4, 5, 5, 5, 1, 5, 5, 0, 5, 4, 4, -1, 4, 4, 5, 4, 0, 5, 4, -1, 0, 5, 5, 5, -1, 4, 5, 5, 5, 5, 4, 4]
labels=np.array(labels)
print(set(labels))
'''
统计出了这个列表里面的包含的元素集合
{0, 1, 2, 3, 4, 5, -1}
'''

n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)  #减去噪声数据-1占的位置
print("Estimate number of clusters:%d"%n_clusters_)#输出蔟的个数
'''Estimate number of clusters:6'''

(10)统计np.array数组里面某一元素的个数

import numpy as np
labels=[0, -1, 0, 1, -1, 1, 0, 1, 2, -1, 1, 0, 1, 1, 3, -1, -1, 3, -1, 1, 1, -1, 1, 3, 4, -1, 1, 1, 2, 0, 2, 2, -1, 0, 1, 0, 0, 0, 1, 3, -1, 0, 1, 1, 0, 0, 2, -1, 1, 3, 1, -1, 3, -1, 3, 0, 1, 1, 2, 3, 3, -1, -1, -1, 0, 1, 2, 1, -1, 3, 1, 1, 2, 3, 0, 1, -1, 2, 0, 0, 3, 2, 0, 1, -1, 1, 3, -1, 4, 2, -1, -1, 0, -1, 3, -1, 0, 2, 1, -1, -1, 2, 1, 1, 2, 0, 2, 1, 1, 3, 3, 0, 1, 2, 0, 1, 0, -1, 1, 1, 3, -1, 2, 1, 3, 1, 1, 1, 2, -1, 5, -1, 1, 3, -1, 0, 1, 0, 0, 1, -1, -1, -1, 2, 2, 0, 1, 1, 3, 0, 0, 0, 1, 4, 4, -1, -1, -1, -1, 4, -1, 4, 4, -1, 4, -1, 1, 2, 2, 3, 0, 1, 0, -1, 1, 0, 0, 1, -1, -1, 0, 2, 1, 0, 2, -1, 1, 1, -1, -1, 0, 1, 1, -1, 3, 1, 1, -1, 1, 1, 0, 0, -1, 0, -1, 0, 0, 2, -1, 1, -1, 1, 0, -1, 2, 1, 3, 1, 1, -1, 1, 0, 0, -1, 0, 0, 3, 2, 0, 0, 5, -1, 3, 2, -1, 5, 4, 4, 4, -1, 5, 5, -1, 4, 0, 4, 4, 4, 5, 4, 4, 5, 5, 0, 5, 4, -1, 4, 5, 5, 5, 1, 5, 5, 0, 5, 4, 4, -1, 4, 4, 5, 4, 0, 5, 4, -1, 0, 5, 5, 5, -1, 4, 5, 5, 5, 5, 4, 4]
labels=np.array(labels)
print(labels)

ratio = len(labels[labels[:]==-1]) / len(labels) # 判定噪声数据(label被打上-1)数据所占的比例
print("Noise ratio:{:.2f}".format(ratio)) #输出噪声数据所占的比例
'''
labels[:]==-1得到的是[False  True False False  True ...]这样的列表
labels[labels[:]==-1]得到的是[-1 -1 -1 -1...]这种所有等于-1的元素集合起来的列表
len(labels[labels[:]==-1])就是求出了在labels里面元素等于-1的个数
'''

总之,在np.array数组里面,有ratio = len(labels[labels[:]==-1]) / len(labels) 这样的用法来统计个数,你必须知道

在这里插入图片描述
(11)典型例子

import numpy as np
city=['太原','北京','上海','成都','西安','南京','广州','西宁']
rank=[  2,    0,      0,     1,     1,    1,    0,      2  ] #城市对应的排名
ranks=np.array(rank)
citys=np.array(city)

print(ranks[:]==2)  #[False False False  True  True  True False False]
print('----------------------------------------------------')

num=len( ranks[ranks[:]==2] )   #ranks里面元素等于2的元素的数量(也就是排名第二的城市的数量)
print(num)
print('----------------------------------------------------')

print( citys[ranks[:]==2]  )  #输出排名第二的城市
print('----------------------------------------------------')

print( set(ranks) )
print('----------------------------------------------------')

for i in range( len(set(ranks)) ):
    print('排名第',i,'的城市是:')
    print( citys[ranks[:]==i] )
print('----------------------------------------------------')

在这里插入图片描述

2.类型的变换
a.astype(new_type) 改变数组的数据类型,不改变原数组
np.int 表示int 类型,具体表示为哪一种int类型,根据数据的大小。
在这里插入图片描述

3. ndarray对象的属性

import  numpy

c=numpy.random.randint(4,10,size=(3,3,4))

print(c.ndim)    # 返回维度(也就是秩)---3
print(c.shape)   #打印(维度,行数,列数)或(行数,列数)---(3, 3, 4)
print(c.size)   #元组里面的元素总和---36
print(c.dtype)   #打印元素类型--------- int32
print(c.itemsize)  #itemsize每个元素占的字节---4

在这里插入图片描述

4.数组的索引与切片

切片

切片 a[1:4:2]就是a[起始编号:终止编号:步长],在a[1:4:2]中获取到的依次是a[1]和a[1+2]

索引

a[123]就是第1维的第2行第3列(注意存在第0维、第0行、第0列)
a[-1,-2,-3]就是倒数第1维的倒数第2行的倒数第三列(不存在倒数第0维、倒数第0行、倒数第0列)

a[:,1,-3]就是截取所有维度下的第1行倒数第3列
a[:,1:3,:]就是截取所有维度下的第1行第2行下的所有列
a[:,:,::2]就是截取所有维度下的所有行下的步长以2划分得到的列
a[:2,1:]是第0行和第1行(含头不含尾所以没有第2行)的第一列到最后一列(包括最后一列)

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
'''
[[1 2 3]
 [4 5 6]
 [7 8 9]]
'''
print(a[:2,1:])
'''
[[2 3]
 [5 6]]
'''
已知real_X为
[[    22   1558]
 [    12  40261]
 [    22   1721]
 [    23    351]
 [    16  23564]
 [    23   1162]
 [    22   3540]
 ...
 ]
 
X = real_X[:,0:1]
Y=real_X[:,0]
XX=real_X[:,1:]
YY=real_X[:,1]

'''
X为:
[[22]
 [12]
 [22]
 [23]
 [16]
 [23]
 [22]
 ...
 ]


Y为[22 12 22 23 16 23 22 ....]

XX为

[[  1558]
 [ 40261]
 [  1721]
 [   351]
 [ 23564]
 ...
 ]

YY为[  1558  40261   1721    351  23564 ...]
'''

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
筛选有用的行

如果
import numpy as np

a=[[0.06824773998019218, 0.9317522600198078], [0.007431585685534259, 0.9925684143144657], [0.05832069801904216, 0.9416793019809578], [0.02456363788335514, 0.9754363621166449], [0.015972037036136255, 0.9840279629638637], [0.0006378256421709638, 0.999362174357829], [0.024103908695498055, 0.975896091304502], [0.06574348000807206, 0.9342565199919279], [0.001247089988504979, 0.998752910011495], [0.9998876180656812, 0.00011238193431883273], [0.999999999998435, 1.5649625474161431e-12], [0.032580407650663834, 0.9674195923493362], [0.006040438955114302, 0.9939595610448857], [0.1292332581924438, 0.8707667418075562], [0.9999999999999933, 6.71087472747175e-15], [0.005167124858166727, 0.9948328751418333], [0.8966987279877104, 0.10330127201228954], [0.020563116634066514, 0.9794368833659335], [0.0003196139537828824, 0.9996803860462171], [0.0176736309431631, 0.9823263690568369], [0.13745352905020158, 0.8625464709497984], [0.056590746628155775, 0.9434092533718442], [0.0002804915614214032, 0.9997195084385786], [0.9999983527174068, 1.647282593243217e-06], [0.0677221051073712, 0.9322778948926288], [0.15345761169616212, 0.8465423883038379], [0.016075321053276137, 0.9839246789467239], [0.02108364793132156, 0.9789163520686784], [0.12468787052478303, 0.875312129475217], [0.12707943990930604, 0.872920560090694], [0.9997993155628417, 0.0002006844371582809], [0.9999847242931277, 1.5275706872340652e-05], [0.0167244562794443, 0.9832755437205557], [0.0010471914137498706, 0.9989528085862501], [0.0016407553851515155, 0.9983592446148485], [0.02175401658294307, 0.9782459834170569], [0.0054261833593199915, 0.99457381664068], [0.9022634574878214, 0.09773654251217861], [0.0005503513243121372, 0.9994496486756879], [0.9993240786851992, 0.0006759213148007624], [0.2597015936628273, 0.7402984063371727], [0.0016991060662702173, 0.9983008939337298], [0.8894044573496374, 0.1105955426503626], [0.9999999999924626, 7.537419164497515e-12], [0.09426164221625777, 0.9057383577837422], [0.018519454865909557, 0.9814805451340904], [0.001734962908491955, 0.998265037091508], [0.7730290484480654, 0.22697095155193459], [0.16306757289135954, 0.8369324271086405], [0.009669002941627203, 0.9903309970583728], [0.9999973080412881, 2.6919587119915377e-06], [0.0011845795642243528, 0.9988154204357756], [0.9999986532944521, 1.3467055478402184e-06], [0.14263798111388937, 0.8573620188861106], [0.9999943196524678, 5.680347532251823e-06], [0.9999999999981656, 1.8344634473246033e-12], [0.981121142037181, 0.018878857962818924], [0.06865092163323405, 0.931349078366766], [0.12023056851309888, 0.8797694314869011], [0.0022048975934682025, 0.9977951024065318], [0.139877761103119, 0.860122238896881], [0.9811456367469089, 0.01885436325309114], [0.008892262788881666, 0.9911077372111183], [0.004638816102628618, 0.9953611838973714], [0.03840089181692807, 0.9615991081830719], [0.9999999999999994, 5.843082649799142e-16], [0.01839080022375672, 0.9816091997762433], [0.9949771240274407, 0.005022875972559326], [0.22936769206838115, 0.7706323079316189], [0.7354409183725052, 0.2645590816274948], [0.9861803433971839, 0.013819656602816154], [0.2729785667128939, 0.7270214332871061], [0.0021232184180380864, 0.9978767815819619], [0.8847776570859435, 0.11522234291405657], [0.0011679712322313351, 0.9988320287677687], [0.7825847112787101, 0.21741528872128996], [0.9999989874784122, 1.0125215877830859e-06], [0.00036718540128866106, 0.9996328145987113], [0.005253555753026107, 0.9947464442469739], [0.4981739697098335, 0.5018260302901665], [0.003941554670213621, 0.9960584453297864], [0.08575864659677934, 0.9142413534032207], [0.0008564214240017742, 0.9991435785759982], [0.0005311371340102067, 0.9994688628659898], [0.9999943202204088, 5.679779591226235e-06], [0.0027845676312813206, 0.9972154323687187], [0.1066942115892725, 0.8933057884107275], [0.9943777136208137, 0.005622286379186281], [0.0002588808577045354, 0.9997411191422955], [0.007875008637663883, 0.9921249913623361], [0.0007974542115928296, 0.9992025457884072], [0.006425885206670867, 0.9935741147933291], [0.05124838307668378, 0.9487516169233162], [0.999999995791739, 4.208260908745235e-09], [0.9999999836295631, 1.637043694803631e-08], [0.9950961203736751, 0.004903879626324851], [0.9999774686030084, 2.2531396991555682e-05], [0.002649991202093527, 0.9973500087979065], [0.004621490317962884, 0.9953785096820371], [0.05398215714461985, 0.9460178428553802], [0.9999996326264566, 3.673735433606294e-07], [0.012632123471857826, 0.9873678765281422], [0.9959108887819157, 0.004089111218084328], [0.0124472975977582, 0.9875527024022418], [0.9955426255562442, 0.004457374443755871], [0.9999998913071046, 1.0869289533202495e-07], [0.0039681934668953645, 0.9960318065331046], [0.9968131904018327, 0.0031868095981672957], [0.9999552570885119, 4.4742911488141684e-05], [0.0018993109474175762, 0.9981006890525824], [0.9999878529277032, 1.2147072296795838e-05], [0.0051198113547635815, 0.9948801886452364], [0.003540645486924676, 0.9964593545130753], [0.07963523941312733, 0.9203647605868727]]
aa=np.array(a) 

那么
result0=aa[ aa[:, 0] > 0.1 ] 就是找出aa里面第0列大于0.1的那些行
result1=result0[ result0[:, 1] > 0.1 ]  就是找出result0里面第1列大于0.1的那些行

上面的输出如下:
print(aa)
'''
[[6.82477400e-02 9.31752260e-01]
 [7.43158569e-03 9.92568414e-01]
 [5.83206980e-02 9.41679302e-01]
 [2.45636379e-02 9.75436362e-01]
 ....
 ]

可以清楚的看到aa是多行两列的数组,
'''
print(aa[:, 0] > 0.1)
'''
[False False False False False ...]
就是找出了第0列大于0.1的那些行,得到的结果是False或True
'''
print(aa[ aa[:, 0] > 0.1 ])
'''
[[9.99887618e-01 1.12381934e-04]
 [1.00000000e+00 1.56496255e-12]
 [1.29233258e-01 8.70766742e-01]
 [1.00000000e+00 6.71087473e-15]
 ...
 ]
就是找出aa里面第0列大于0.1的那些行
'''
print(result0[:, 1] > 0.1)
'''
[False False False False False ...]
就是找出了第1列大于0.1的那些行,得到的结果是False或True
'''
print(result0[ result0[:, 1] > 0.1 ])
'''
[[0.12923326 0.87076674]
 [0.89669873 0.10330127]
 [0.13745353 0.86254647]
 [0.15345761 0.84654239]
 ...
 ]
就是找出result0里面第1列大于0.1的那些行
'''

4. ndarray数组的运算函数

①运算函数(一元函数)

  • np.cos(x) 余弦 np.sin(x) 正弦 np.tan(x)正切
  • np.abs(x)或 np.fabs(x) 计算数组各元素的绝对值
  • np.square(x) 计算数组各元素的平方
  • np.sqrt(x) 计算数组各元素的平方根
  • np.log(x)是以e为底数!!
  • np.log10(x) np.log2(x) 以10底对数,2底对数
  • np.exp(x) 计算数组各元素的指数值
  • np.ceil(x) np.floor(x) 计算数组各元素的ceiling值或floor值(celling是不超过元素的整数的最大值,floor是超过元素的整数最小值)
  • np.rint(x) 计算数组各元素的四舍五入值
  • np.modf(x) 将数组各元素的小数和整数部分以两个独立数组形式返回
    在这里插入图片描述
    在这里插入图片描述
    ②运算函数(二元函数)
    在这里插入图片描述
    在这里插入图片描述

5. numpy的随机函数

在这里插入图片描述

  • 像np.random.rand(shape)就是产生(0,1)范围内的数,所以参数只有shape
  • 像np.random.randn(shape)就是产生标准正态分布(范围也是给定的),所以参数也是只有shape
  • 像其他的:np.random.randint(0, 3, size = (2, 3))和np.random.uniform(0, 3, size = (2, 3)) 和np.random.normal(0.1 , 2.0 , size = (2, 3)) 都是优先配置那些属性参数,然后再用"size=(3,2)"这样的语句控制形状shape
  • np.random.uniform(low, high, size =)是什么意思?就是说对于low、high是不需要单独弄个括号的,而size就需要。如:np.random.uniform(0, 3, size = (2, 3)) 或者np.random.uniform(0, 3, (2, 3))
np.random.seed(10)加上随机种子,只要随机种子一样就会产生相同的随机数

①np.random.rand(shape)产生形状为shape 、值为 [0, 1) 范围内的浮点随机数
a = np.random.rand()  #0.575695284381402
b = np.random.rand(2) #[0.50852146 0.17941441]
a = np.random.rand(5) #[0.78489889 0.33281311 0.98805554 0.29558407 0.68429617]
c = np.random.rand(2,3)
'''
[[0.07689737 0.17578407 0.16941739]
 [0.63075319 0.86015553 0.88239051]]                                                
'''

②np.random.randint(low, high, size = ),产生产生形状为size, 值为 [low, high) 范围内的整型随机数
a = np.random.randint(0, 3)    #2                                                             
b = np.random.randint(3, size = 4)  #[0 2 1 1]
c = np.random.randint(0, 3, size = (2, 3))
'''
[[2 1 1]
 [0 1 0]]
'''

③np.random.randn(shape)产生形状为shape的标准正态分布的随机数
a = np.random.randn(3)  #[ 0.2203204   1.73158706 -0.78638403]
b = np.random.randn(2, 3)
'''
[[ 0.44799247 -0.37243396 -0.57481381]
 [ 0.17644269  0.99336282 -0.55967673]]
'''


⑤np.random.normal(μ, σ, size = )# 产生形状为size的正态分布
a = np.random.normal(0.1, 2.0, 3)  #[ 1.31578944 -1.16272895  2.50095739]
b = np.random.normal(0.1, 2.0,size = (2, 3))   
'''
[[ 2.07134546 -0.62086584 -0.32091925]
 [ 0.2286672  -1.13700916  0.09206429]]
'''

⑥np.random.poisson(lam,size=)产生shape为size,随机事件发生概率为lam的泊松分布

⑦np.random.uniform(low, high, size =),产生shape为size范围在[low, high)内的均匀分布
a = np.random.uniform(3, size = 4)     #[2.65418547 1.65702115 2.42128949 2.74215319] 
b = np.random.uniform(0, 3)    #1.253105912177019
c = np.random.uniform(0, 3, size = (2, 3))    
'''
[[2.11947645 2.85662794 2.33596866]
 [0.86552208 2.9166298  1.55980368]]
'''                                                          

b=np.random.shuffle(a)
b=np.random.permutation(a)

c=np.random.choice(b,(3,2),p)  #以概率p从b中抽取一些元素组成形状为(3,2)的数组
c=np.random.choice(b,(3,2),replece=False,p) #以概率p从b中抽取一些元素组成形状为(3,2)的数组,而且不能重复取相同的元素

①np.random.rand(shape)产生形状为shape, 值为 [0, 1) 范围内的浮点随机数

import numpy as np

# 默认shape = 1, 产生[0, 1)范围内的一个浮点随机数
a = np.random.rand() 

# shape= 2, 产生[0, 1)范围内的2个浮点随机数,组装在一个列表里
b = np.random.rand(2) 

# shape = 5, 产生[0, 1)范围内的5个浮点随机数,组装在一个列表里
a = np.random.rand(5) 

# shape=(2,3), 产生[0, 1)范围内的二维数组(矩阵)的浮点随机数
c = np.random.rand(2,3) 



0.575695284381402
-----------------------
[0.50852146 0.17941441]
-----------------------
[0.78489889 0.33281311 0.98805554 0.29558407 0.68429617]
------------------------------------------------------------
[[0.07689737 0.17578407 0.16941739]
 [0.63075319 0.86015553 0.88239051]]

在这里插入图片描述
②np.random.randint(low, high = None, size = None),产生产生shape为size, 值为 [low, high) 范围内的整型随机数

import numpy as np

# low = 0, high = 3, 产生[0, 3)范围内的一个整型随机数
a = np.random.randint(0, 3)

# low = 3, 产生[0, 3)范围内的一维数组(向量)的整型随机数
b = np.random.randint(3, size = 4)

# low = 0, high = 3, 产生[0, 3)范围内的二维数组(矩阵)的整型随机数
c = np.random.randint(0, 3, size = (2, 3))

print(a)
print(b)
print(c)

2
-----------------------
[0 2 1 1]
-----------------------
[[2 1 1]
 [0 1 0]]

③np.random.randn(shape)产生形状为shape的标准正态分布的随机数

import numpy as np

# 从标准正态部分中随机采样3个随机数
a = np.random.randn(3)

# 从标准正态分布中随机采样2 × 3个随机数,组成(2, 3)的二维数组(矩阵)
b = np.random.randn(2, 3)

print(a)
print(b)

[ 0.2203204   1.73158706 -0.78638403]
----------------------------------------------
[[ 0.44799247 -0.37243396 -0.57481381]
 [ 0.17644269  0.99336282 -0.55967673]]

在这里插入图片描述
④seed(s)随机种子值为s的随机种子
在这里插入图片描述
⑤np.random.normal(μ, σ, size=) 产生形状为size的正态分布
参数:

  • 期望μ,μ是正态分布的位置参数,描述正态分布集中趋势位置,与μ邻近的概率值越大,而远离μ的概率值越小。正态分布以X =
    μ为对称轴,左右完全对称。正态分布的期望、均数、中位数、众数相同,均等于μ;
  • 标准差σ,σ描述正态分布数据的离散程度,σ越大,数据的分布越分散,σ越小,数据分布越集中。σ也称为正态分布的形状参数,σ越大,曲线越扁平,反之,σ越小,曲线越高瘦;
import numpy as np

mu, sigma = 0.1, 2.0

# 从μ = 0.1, σ = 2.0的正态部分中随机采样3个随机数
a = np.random.normal(mu, sigma, 3)

# 从μ = 0.1, σ = 2.0的正态部分中随机采样2 × 3个随机数,组成(2, 3)的二维数组(矩阵)
b = np.random.normal(mu, sigma, size = (2, 3))

print(a)
print(b)


[ 1.31578944 -1.16272895  2.50095739]

[[ 2.07134546 -0.62086584 -0.32091925]
 [ 0.2286672  -1.13700916  0.09206429]]

在这里插入图片描述
⑥np.random.poisson(lam,size=)产生形状为size,随机事件发生概率为lam的泊松分布
⑦np.random.uniform(low, high, size = ),产生形状为size范围在[low, high)内的均匀分布

import numpy as np

# 产生shape为size范围在[low, high)内的均匀分布

# low = 3, 输出向量, shape = (4, )
a = np.random.uniform(3, size = 4)

# low = 0, high = 3, 输出为标量, shape = ()
b = np.random.uniform(0, 3)

# low = 0, high = 3, 输出为矩阵, shape = (2, 3)
c = np.random.uniform(0, 3, size = (2, 3))

print(a)
print(b)
print(c)

[2.65418547 1.65702115 2.42128949 2.74215319]

1.253105912177019

[[2.11947645 2.85662794 2.33596866]
 [0.86552208 2.9166298  1.55980368]]


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. numpy的统计函数

  • np.sum(a,axis=0或1) 根据给定轴求和
  • np.min(a,axis=0或1) 与np.max(a,axis=0或1) 计最小值,最大值
  • np.ptp(a,axis=0或1) 计算最大值与最小值的差
  • np.median(a,axis=0或1) 计算中位数(中值)
  • np.mean(a,axis=0或1) 根据给定轴求均值
  • np.average(a,axis=0或1,weights=None) 根据给定轴计算加权平均值
    比如:(np.average(a,axis=0或1,weights=[10,8,6]) )
  • np.std(a,axis=0或1) 根据给定轴求标准差
  • np.var(a,axis=0或1) 根据给定轴求方差

  • np.argmin(a) 与np.argmax(a) 计算数组a中元素最小值,最大值的降一维后下标
  • np.unravel_index(np.argmax(a),a.shape)计算数组a中元素最小值,最大值在数组a中的下标
  • np.unravel_index(index,shape) 根据shape将一维下标index转换成多维下标

求方差也好,求均值罢:
axis=0就是按列计算,那么有几列结果就是几个值;
axis=1就是按行计算,有几行返回结果就是几个值。

axis=1就是在横轴上求,那么给权重时要给出每一列的权重值,最后返回的是每一行的加权平均的计算结果
import numpy as np 
a = np.arange(6).reshape(3,2)  
'''
[[0 1]
 [2 3]
 [4 5]]
'''

avg=np.average(a, axis = 1, weights =[3,5]) #按行计算,有三行所以返回三个值
print(avg)
'''
[0.625 2.625 4.625]
'''



axis=0就是在纵轴上求,那么给权重时要给出每一行的权重值,最后返回的是每一列的加权平均的计算结果
import numpy as np
a=np.arange(15).reshape(3,5)
'''
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
'''
print(np.average(a,axis=0,weights=[10,5,1]))  #按列计算,有几列返回几个值
'''
[2.1875 3.1875 4.1875 5.1875 6.1875]
'''



axis=0就是在纵轴上求,最后返回的是每一列的的计算结果
import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6],[7,8,9]])  
'''
[[1 2 3]
 [3 4 5]
 [4 5 6]
 [7 8 9]]
'''

print (np.mean(a))
'''4.75 '''

print (np.mean(a, axis =  0))
'''
[3.75 4.75 5.75]
'''

在这里插入图片描述

  • np.argmin(a) 与np.argmax(a) 计算数组a中元素最小值,最大值的降一维后下标
  • np.unravel_index(np.argmax(a),a.shape)计算数组a中元素最小值,最大值在数组a中的下标
  • np.unravel_index(index,shape) 根据shape将一维下标index转换成多维下标
    在这里插入图片描述
    在这里插入图片描述

7. numpy的梯度函数

在这里插入图片描述
(是右侧减去左侧(即a、b、c中(c-a)/2 ))
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8. numpy的存储与读取

①二维数组的存储与读取
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
②多维数组的存储与读取
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的甲乙丙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值