#numpy ##生成0和1的数组

1.生成0和1的数组

np.ones(shape[, dtype, order]) np.ones_like(a[, dtype, order, subok])
np.zeros(shape[, dtype, order]) np.zeros_like(a[, dtype, order,
subok])

1.1随机生成1的数组

import numpy as np
ones = np.ones([3,4])
print(ones)

在这里插入图片描述

import numpy as np
ones = np.zeros([3,4])
print(ones)

在这里插入图片描述

1.2按照a数组方式生成a1数组,按照a数组方式生成a2数组

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a1 = np.zeros_like(a)
a2 = np.ones_like(a)
print(a1)
print(a2)

在这里插入图片描述

2.从现有数组生成

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
# 从现有的数组当中创建
a1 = np.array(a)#深拷贝
# 相当于索引的形式,并没有真正的创建一个新的
a2 = np.asarray(a)#浅拷贝
print(a1)
print(a2)

在这里插入图片描述

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
# 从现有的数组当中创建
a1 = np.array(a)
# 相当于索引的形式,并没有真正的创建一个新的
a2 = np.asarray(a)
a[0][0] = 888
print(a1)
print(a2)

a[0][0] = 888

修改数组的第一个元素,修改为888
在这里插入图片描述
a1 = np.array(a)这种拷贝方法,实实在在创建了一个新的数组,改变原数组内的元素,不影响拷贝后数组的元素深拷贝
a2 = np.asarray(a)这种拷贝方法,相当于索引的形式,并没有真正的创建一个新的数组,改变原数组内的元素,也会影响到拷贝后数组的元素浅拷贝

如何理解深拷贝和浅拷贝再举2个例子
例1

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a1 = np.array(a)
a2 = np.asarray(a)
a[1][1] = 888
print(a1)
print(a2)

这个时候a1,a2分别是什么?

D:\Anaconda3\python.exe C:\Users\Windows11\Desktop\人工智能\numpy.py 
[[1 2 3]
 [4 5 6]]
[[  1   2   3]
 [  4 888   6]]

Process finished with exit code 0

例2

import numpy as np
a = np.array([[1,2,3],[4,5,6],[1,2,3],[4,5,6]])
a1 = np.array(a)
a2 = np.asarray(a)
a[3][0] = 888
print(a1)
print(a2)

这个时候a1,a2分别是什么?

D:\Anaconda3\python.exe C:\Users\Windows11\Desktop\人工智能\numpy.py 
[[1 2 3]
 [4 5 6]
 [1 2 3]
 [4 5 6]]
[[  1   2   3]
 [  4   5   6]
 [  1   2   3]
 [888   5   6]]

Process finished with exit code 0

3.生成固定范围数组

np.linspace (start, stop, num, endpoint)
start 序列的起始值
stop 序列的终止值,
num 要生成的等间隔样例数量,默认为50
endpoint 序列中是否包含stop值,默认为ture

import numpy as np
a = np.linspace(0,10,5)
print(a)

在这里插入图片描述

import numpy as np
a = np.linspace(0,888,12)
print(a)

在这里插入图片描述

其它的还有
numpy.arange(start,stop, step, dtype)
numpy.logspace(start,stop,num)

import numpy as np
a = np.arange(0,100,5)
print(a)

在这里插入图片描述

import numpy as np
a = np.logspace(0,10,5)
print(a)

在这里插入图片描述

import numpy as np
a = np.logspace(0,5,3)
print(a)

在这里插入图片描述

4.生成随机数组

np.random模块

4.1均匀分布

np.random.rand(d0, d1, …, dn)

返回[0.0,1.0)内的一组均匀分布的数。

np.random.uniform(low=0.0, high=1.0, size=None)

功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.

参数介绍:

low: 采样下界,float类型,默认值为0;

high: 采样上界,float类型,默认值为1;

size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出mnk个样本,缺省时输出1个值。

返回值:ndarray类型,其形状和参数size中描述一致。

np.random.randint(low, high=None, size=None, dtype=‘l’)

从一个均匀分布中随机采样,生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

import numpy as np
a = np.random.uniform(0,1000,200)
print(a)
D:\Anaconda3\python.exe C:\Users\Windows11\Desktop\人工智能\numpy.py 
[763.17000673 912.74696744 142.70613934 159.44510718 536.26200973
 303.99813242 426.1777927  374.99407215 324.68371339 735.54055719
 470.10512552 575.72633945  41.26939558  62.98341043 166.30185461
 240.74842652 848.94000904 803.61768799 160.97917776 707.49248542
 165.86502576 658.01676676 178.65258787  33.6403922  504.76238324
 301.7999008  370.77665196 994.10445718 315.86885315 300.02638197
 465.4819321  776.90303792 319.27342624  99.20275848 908.42947322
 972.96668819 917.39244842 761.8637219  576.41861197   3.94945794
 576.57058783 998.40124188 516.33442597  57.81980719 857.38826931
 417.10058732 569.44256046 773.95344191 562.99014379 977.03779571
 480.55761714 704.78285599 200.60732043 648.49041562 422.86186343
 166.83458518 786.59578514 529.59972941  72.84787871 262.71634559
 884.00599553 310.44913871 301.36713703 926.47516543 184.23900297
 552.39197634 826.43821061 698.36766494 674.30433065 460.87137729
 106.53282085  70.50488587 821.47594564 959.2220661  772.61911584
 845.41986498 703.58699777 458.4348247  336.40671103 426.98053305
 849.29919365 899.98185373 465.74961369 747.04645062 630.68788934
 946.96578999 416.7805273  482.88199671 643.54046736 823.89003137
 140.91609376 565.70620106 720.8008174  516.98184866 891.90057035
 713.61533771 794.03725521 937.14607595 120.31489411  50.66937683
 256.34950888  55.63836626 468.78173813 615.5690741  681.91566456
 873.24496605  24.89683135 582.94627352 239.13273851 723.36405151
 386.56406653  17.85844723 622.83575538 115.48412155 991.20519008
 856.67478583 893.29781532  15.34096839 692.63898718  78.37515996
 157.36507355 255.57050368 358.3362586  964.65407814 890.43716642
 437.25032741 567.83290089 255.06469878 260.69593034 841.87517733
 978.87608108 185.8167628   78.79713111 141.18768483 139.33721946
 411.59640941 765.74983851 488.52286194 391.8264338  443.59538813
 780.22217954  71.64939799 137.99289605 983.39871122 696.02041609
 675.8095987  862.21414104 469.36787826 409.33044082 663.19356834
 909.62354732 100.51267321 288.99192474 870.18500874 800.02533698
 690.5676547  497.47681447 820.94316936 871.34113773 173.40183754
  58.06199657 681.41609586 752.99615307 333.46990673 167.07912205
 832.34428347 950.9589102  888.00533889 746.47519016 232.63622435
 113.03123567 302.99201969 908.02188978 929.45925614 952.32052376
 694.18194787 289.00011739 440.2616583  364.18807363 120.04131114
 151.80223045 793.88286617 972.82748688 970.53959391 830.23410135
 592.08884972 125.21069752 825.34237763 942.95050126 408.96115392
 394.07685836 435.67856855 496.17768255 260.31035755 223.14530789
 918.93675077 844.27272581 890.72273906 482.86670165 308.00938364]

Process finished with exit code 0

画图看分布状况:

import numpy as np
import matplotlib.pyplot as plt
a = np.random.uniform(0,1000,200)
# 画图看分布状况
# 1)创建画布
plt.figure(figsize=(10, 10), dpi=100)
# 2)绘制直方图
plt.hist(x=a, bins=1000)  # x代表要使用的数据,bins表示要划分区间数
# 3)显示图像
plt.show()

在这里插入图片描述
输出样本数目设置为1000000000

import numpy as np
import matplotlib.pyplot as plt
a = np.random.uniform(0,1000,1000000000)
# 画图看分布状况
# 1)创建画布
plt.figure(figsize=(10, 10), dpi=100)
# 2)绘制直方图
plt.hist(x=a, bins=1000)  # x代表要使用的数据,bins表示要划分区间数
# 3)显示图像
plt.show()

在这里插入图片描述

4.2正态分布

正态分布是一种概率分布。正态分布是具有两个参数μ和σ的连续型随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个参数σ是此随机变量的方差,所以正态分布记作N(μ,σ )。
在这里插入图片描述

  1. np.random.randn(d0, d1, …, dn)

功能:从标准正态分布中返回一个或多个样本值

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

loc:float
​ 此概率分布的均值(对应着整个分布的中心centre)
scale:float
​ 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size:int or tuple of ints
​输出的shape,默认为None,只输出一个值

  1. np.random.standard_normal(size=None)

返回指定形状的标准正态分布的数组。

import numpy as np
import matplotlib.pyplot as plt
a = np.random.normal(0,1000,1000000000)
# 画图看分布状况
# 1)创建画布
plt.figure(figsize=(20, 10), dpi=100)
# 2)绘制直方图
plt.hist(a, 1000)
# 3)显示图像
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值