numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式

 

 

 

 

一、方式一:array函数

创建数组最简单的办法是array函数。它接收一切序列型的对象(包括其他数组),然后产生一个新的ndarray对象。【例1】

如果没有说明,array()会尝试为新建的这个数组推断出一个较为合适的数据类型。

np.array(["a", "b", "c"])     

 

注意:

(1) 数据类型可以显示地指定。

np.array([1,2,4],dtype="float32")      #【例2】

 

(2) 嵌套序列将会被转换为一个多维数组。

np.array([[1, 2, 3],

               [4, 5, 6],

               [7, 8, 9]])           //使用列表生成二维数组。序列包含序列转化为二维数组。【例3】

 

np.array([[[1,2]],

                [[3,4]],

                [[5,6]]])        //创建3*1*2的三维数组。序列包含序列包含序列转化为三维数组。【例4】

 

例1:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第1张图片

 

结果:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第2张图片

 

例2:

结果:

 

 

例3:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第3张图片

结果:

 

 

二、方式二:固定元素

(1)创建全0数组

np.zeros(6)                                //创建一个长度为6的,元素全为0的一维数组。默认创建数组类型是float64。【例1】

np.zeros((2,3), dtype=int)         //创建一个2行3列的二维数组,数组元素全为0。【例1】

 

(2)创建全1数组

np.ones(5)                 //创建一个长度为5的,元素全为1的一维数组。默认创建数组类型是float64。

np.ones((2,3))            //创建一个2行3列的二维数组,元素全为1。

 

(3)创建特定值的数组

np.full((3,5), 8.8)        #创建一个3*5的数组,值都为8.8

 

(4)创建空数组

np.empty(5)               //创建一个长为5,未初始化的一维数组。注意返回的不是全零数组。

 

(5)创建单位矩阵

np.eye(3)                   #创建3*3的单位矩阵。

 

 

例1:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第4张图片

 

结果:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第5张图片

 

 

 

三、方式三:数列

 

(1)创建一个线性序列数组

np.arange(1, 15, 2)   #即[1, 15),步长为2。

 

(2) 等差数列数组

np.linspace(0,10,6)           #从0到10(包含10),生成6个数的等差数列。即[0,2,4,6,8,10]。

 

(3)创建一个等比数列数组

np.logspace(0, 9, 10)        #含有10个元素的数组。形成从10^0 ~10^9的等比数列。【例1】

 

(4)创建网格数组

X,Y=np.meshgrid(x,y)                  //生成网格数据。【例2】

x,y=np.mgrid[1:5:1,0:1:0.1]          //生成网格数据。【例3】

 


 

例1:

 

结果:


 

例2:

import numpy as np
import matplotlib.pyplot as plt

 

m,n=5,3
x=np.linspace(0,1,m)             #生成m个数据
y=np.linspace(0,1,n)

 

X,Y=np.meshgrid(x,y)            #生成网格数据

 

print(x)
print(y)
print(X)
print(Y)

plt.plot(X,Y,'b.',linestyle='none')

plt.show()

运行结果:

[0.   0.25 0.5  0.75 1.  ]                      #x
[0.  0.5 1. ]                                         #y
[[0.   0.25 0.5  0.75 1.  ]                     #X。三行五列。
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]]                   
[[0.  0.  0.  0.  0. ]                               #Y。三行五列。
 [0.5 0.5 0.5 0.5 0.5]
 [1.  1.  1.  1.  1. ]]

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第6张图片

 

例3:

import numpy as np
import matplotlib.pyplot as plt

xx,yy = np.mgrid[1:5:1,0:1:0.1]
print(xx)
print(yy)

plt.scatter(xx,yy,color='red')

plt.show()

运行结果:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第7张图片

 

 

 

四、方式四:随机函数

 

(1)随机小数

np.random.random((3, 3))    #创建一个3*3的,每一个数是[0,1)范围的随机数的数组。【例1】

 

(2) 随机整数

np.random.randint(0, 10 , (3,3))   #3*3大小,每个元素从[0, 10)随机选取。

 

(3)正态分布

np.random.normal(0, 1, (3,3))     #均值为0, 标准差为1,正态分布的随机数构成的数组。

 

(4)随机重排列

a = np.array([10, 20, 30, 40])

np.random.permutation(a)            #根据数组a,产生一个新的数组。元素是a的随机重排列。a不变。【例2】

 

(5)打乱数组

a = np.array([10,20,30,40])

np.random.shuffle(a)                     #a会发生改变。

 

(6)采样

a = np.arrange(10, 25, dtype=float)

np.random.choice(a, size=(3,4))         #从a中采12个,然后按照3*4返回。【例3】

 

(7) 随机数种子

np.random.seed(123)                    #我们说这些都是伪随机数,是因为它们都是通过算法基于随机数生成器种子,在确定性的

                                                       条件下生成的。可以设置种子,使得产生相同的随机数。【例4】

 

例1:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第8张图片

 

结果:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第9张图片

 

 

例2:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第10张图片

 

结果:

 

 

例3:

numpy(2)——numpy数组创建:array方式、固定元素方式、数列方式、随机函数方式_第11张图片

 

结果:

 

 

例4:

import numpy as np


np.random.seed(1)
x=np.random.randn(5)
print(x)

 

y=np.random.randn(5)
print(y)                                #y与x不相等了。说明随机数种子管一次用。

 

np.random.seed(1)
z=np.random.randn(5)                 
print(z)                                 #z与x一样。因为都是基于同一个种子。

运行结果:

[ 1.62434536 -0.61175641 -0.52817175 -1.07296862  0.86540763]
[-2.3015387   1.74481176 -0.7612069   0.3190391  -0.24937038]
[ 1.62434536 -0.61175641 -0.52817175 -1.07296862  0.86540763]           #z与x一样。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(11,Python/DL/ML)