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(μ,σ )。
- np.random.randn(d0, d1, …, dn)
功能:从标准正态分布中返回一个或多个样本值
- 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,只输出一个值
- 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()