Python——numpy的创建

  • 注:后边有练习题哦!!!

 

1.numpy概述

numpy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

2.使用array创建

语法:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

  •  在使用array创建数组前,需要先导包
#导包,导numpy 导过包才可以使用numpy来创建array
import numpy as np #as 是起别名的意思,咱们这边把numpy改成np,这样我们后续也方便调用

3.array参数的使用

参数参数及描述
Object任何序列类型
dtype数组的所需数据类型,可选。
copy可选,默认为true,对象是否被复制。
orderC(按行)、F(按列)或A(任意,默认)。
subok默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。
ndimin指定返回数组的最小维数。
  • array参数的使用 代码部分

#  Object  任何序列类型  
tuple01 = (1,2,3)
list01= [1,2,3]
set01 = {5,6,7}
dict01 ={"张三":10,"李四":20}
np01= np.array(dict01)
print(np01)

#dtype    数组的所需数据类型,可选。  
list01 = [1,2,3]
np01= np.array(list01,dtype=float)
print(np01)


"""
说明 np02 是 np01 的副本,两个是不同的对象
所以np02 和 np01 的数据不同
"""
list01 = [1,2,3]
np01= np.array(list01)
np02=np.array(np01,copy=True)
np02[0]=10
print(np01)
print(np02)
"""
可以看到数据是一样的,说明np02和np01是同一个对象
"""
list01 = [1,2,3]
np01= np.array(list01)
np02=np.array(np01,copy=False)
np02[0]=10
print(np01)
print(np02)

#由于order效果不明显,也不常用,在这里作为了解

#subok    默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。 
#matrix 是矩阵 之后会给大家详细讲解先回用
np01 = np.matrix('1 2 7; 3 4 8; 5 6 9')
print(type(np01))
print(np01)
np02 = np.array(np01, subok=True)
np03 = np.array(np01, subok=False)
print(type(np02)) #<class 'numpy.matrix'> 如果是true返回矩阵
print(type(np03)) #<class 'numpy.ndarray'>如果是False,强制改为了数组

#ndimin    指定返回数组的最小维数。  
list01 = [1,2,3]
np01= np.array(list01,dtype=float,ndmin=3)
print(np01)

使用array创建数组

#使用array创建一维数组
list01 = [1,2,3,4]
np01 = np.array(list01)
print(np01)
print(type(np01))


#使用array创建二维数组
list02 = [[1,2,3,4],[5,6,7,8]]
np02 = np.array(list02)
print(np02)
print(type(np02))


#使用array创建三维数组
list03 = [[[1,2,3,4],[5,6,7,8],[9,10,11,12]]]
np03 = np.array(list03)
print(np03)
print(type(np03))

使用arange创建数组

"""
arange(start,stop,step,dtype) 
1.不写start,默认从0开始
2.左开右闭
3.step步长,不写默认是1
"""
#一维数组
a = np.arange(10) #[0 1 2 3 4 5 6 7 8 9]
a = np.arange(2,10) #[2 3 4 5 6 7 8 9]
a = np.arange(1,10,2) #[1 3 5 7 9]
a = np.arange(1,10,2,dtype=float)
print(a)
#二维数组
#切记前面的12,必须满足3*4
np01  = np.arange(12).reshape(3, 4)
print(np01)

使用random创建数组 

  • 常用的random函数

函数描述
np.random.random(size)生成0到1之间的随机数
np.random.randint(low,high=None,size=None,dtype="1")生成随机的整数
np.random.randn(d0,d1,d2,d3.........)生成标准正态的随机数(期望为0,方差为1)
np.random.normal(loc,scale,size)生成正态分布(指定期望和方差)
np.random.uniform(low,high,size)生成均勻分布的随机数
np.random.shuffle()随机打乱顺序
np.random.seed()设置随机数种子
np.random.sample(size)生成随机的浮点数
  • 使用random创建数组 代码部分
# np.random.random()    生成0到1之间的随机数  
#创建一维数组   size生成几个数据,可直接写4
np01= np.random.random(size=4) #[0.13475357 0.8088961  0.52055803 0.49706622]
#创建二维数组  size=(3,4) 3行4列 可用()和[] ,效果一样
np01= np.random.random((3,4))
#创建三维数组  两个三行四列
np01= np.random.random((2,3,4))
print(np01) 

####
"""
np.random.randint(low,high=None,size=None,dtype="1")   生成随机的整数  
low:开始
high=None :结束
size:长度
dtype数据类型,默认是int32  no01.dtype属性
1.左开右闭
2.不写low默认是0
"""
#创建一维数组
np01= np.random.randint(1,11,10)#1-10
#创建二维数组
np01= np.random.randint(1,11,(3,4))#1-10
#创建三维数组
np01= np.random.randint(1,11,(2,3,4))#1-10
print(np01)


#创建标准的正态分布
#一维数组
np01=np.random.randn(4)
#二维数组
np01=np.random.randn(2,4)
#三维数组
np01=np.random.randn(3,2,4)
print(np01)


####
"""
np.random.normal(loc,scale,size)生成正态分布(指定期望和方差)
loc: 期望,默认0
scale: 方差,默认1.0
size: 长度
"""
np01= np.random.normal(size=5)
np01= np.random.normal(loc= 2,scale=3,size=5)
np01= np.random.normal(size=(2,3,5))
print(np01)


####
"""
np.random.uniform(low,high,size) 生成均勻分布的随机数
low: 不写默认是0,
high: 结尾,
: 长度
1.左开右闭
"""
np01= np.random.uniform(size= 4)#四个数据几乎不会相差太多,比较均匀
np01= np.random.uniform(size= (2,4))
np01= np.random.uniform(high=3)
print(np01)


####
"""
np.random.shuffle(ArrayLike)随机打乱顺序
"""
np01 = np.array([2,5,6,7,3])
print(np01)
np.random.shuffle(np01)
print(np01)


####
"""
np.random.seed()设置随机数种子
从每堆种子里选出来的数都是不会变的,从不同的堆里选随机种子每次都不一样,若想每次都能得到相同的随机数,每次产生随机数之前,都需要调用一次seed()
"""
np.random.seed(1)
np01= np.random.randint(1,10,size= 5)
np.random.seed(1)
np02= np.random.randint(1,10,size = 5)
print(np01)
print(np02)



####
"""
np.random.sample(size)  生成随机的浮点数
"""
np01= np.random.sample(size=2)
print(np01)
np02= np.random.sample(size=(2,3))
print(np02)

使用zeros创建数组

numpy.zeros(shaps,dtype=float,order="C") #创建指定大小的数组,数组以0填充

  • 使用zeros创建数组 代码部分
"""
numpy.zeros(shaps,dtype=float,order="C") #创建指定大小的数组,数组以0填充
shaps:维度
dtype:数据类型
order:按行按列
"""
np01= np.zeros(5) #[0. 0. 0. 0. 0.]
np01= np.zeros(5,dtype="int32")  #[0 0 0 0 0]
np01= np.zeros((2,5),dtype="int32") 
"""
[[0 0 0 0 0]
 [0 0 0 0 0]]
"""
print(np01)

创建特定形状的多维数组

函数描述
np.zeros((3, 4))创建3×4的元素全为0的数组
np.ones((3, 4))创建3×4的元素全为1的数组
np.empty((2, 3))创建2×3的空数组,空数据中的值并不为0,而是未初始化的垃圾值
np.zeros_like(ndarr)以ndarr相同维度创建元素全为0数组
np.ones_like(ndarr)以ndarr相同维度创建元素全为1数组
np.empty_like(ndarr)以ndarr相同维度创建空数组
np.eye(5)该函数用于创建一个5×5的矩阵,对角线为1,其余为0
np.full((3,5), 10)创建3×5的元素全为10的数组,10为指定值
  • 创建特定形状的多维数组 代码部分
np01= np.ones((2,5),dtype="int32")
np01= np.empty((2,5),dtype="int32")
print(np01)


list01= [
    [1,2,3],
    [4,5,6]
]
np01= np.array(list01)
print(np01.shape)
np02= np.zeros_like(np01,dtype=float)
print(np02)
print(np02.shape)


#  np.eye(5)    该函数用于创建一个5×5的矩阵,对角线为1,其余为0  
np01= np.eye(5)
print(np01)


# np.full((3,5), 10)    创建3×5的元素全为10的数组,10为指定值  
#10是指定的,你可以指定任意值
np01= np.full((3,5),5)
print(np01)

使用linspace创建数组 

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数描述
start序列的起始值
stop序列的终止值 ,如果endpoint=True,则证明数组包含于数列
num生成样本数量,默认是50
endpoint如果为ture则包含stop,否则不包含
retstep如果retstep=Ture,生成的数组会显示间距,否则不显示
dtype数据类型
  •  使用linspace创建数组 代码部分
"""
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
"""
np01= np.linspace(1,10,5)#从1-10,生成5个数据
np01= np.linspace(1,10,5,endpoint=True)#把10包含进去
np01= np.linspace(1,10,5,endpoint=False)#把10不包含进去
np01= np.linspace(1,10,5,retstep=True)#显示间距
np01= np.linspace(1,10,5,dtype="int32")
print(np01)

使用logspace创建数组

np.logspace(start,stop,num=50,endpoint=Ture,base=10.0,dtype=None)

参数描述
start序列的起始值
stop序列的终止值 ,如果endpoint=True,则证明数组包含于数列
num生成样本数量,默认是50
endpoint如果为ture则包含stop,否则不包含
base对数log的底数,默认10.0
dtype数据类型
  • 这边就不做代码演示了

4.数组的属性

属性描述
ndarray.ndim数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。
ndarray.shape数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有n行和m列的矩阵,shape将是(n,m)。因此,shape元组的长度就是rank或维度的个数 ndim。
ndarray.size数组元素的总数。这等于shape的元素的乘积。
ndarray.dtype一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。
ndarray.itemsize数组中每个元素的字节大小。例如,元素为float64类型的数组的itemsize为8(=64/8),而int32类型的数组的itemsize为4(=32/8)。它等于ndarray.dtype.itemsize。
ndarray.T数组转置,及行列调换
ndarray.nbytes整个数组所需的字节数量,可以使用nbytes属性。其值等于数组的size属性值乘以 itemsize属性值。
  •  数组的属性 代码部分
np01 = np.array([1,2,3,4])
np01 = np.array([[1,2,3,4]])
#print(np01.ndim)
print(np01.shape)
print(np01.size)
print(np01.dtype)
print(np01.itemsize) #一个字节默认是8为  32/8 = 4
print(np01.nbytes)#一个数字字节4,4*4=16


list01 = [
    [1,2],
    [3,4],
    [5,6]
]
np01=np.array(list01)
print(np01)
np02= np01.T
print(np02)

数组的创建基本就是这些,这边为大家准备了几个练习题。

练习题

创建一个长度为10的一维全为0的ndarry对象,然后让第五个元素等于
创建一个元素为从10到49的narray对象。
创建一个4*4的二维数组,并输出数组元素类型。
创建一个数组,该数组可以完全将坐标位置为(0,1,3)到(3,0,1)的转置。
将4题中的数据类型转换为float64。

最后提醒大家,第一次使用array的时候,记得要导包!下课!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值