Numpy库学习笔记1

Numpy数组基本用法:

  1. NumPy提供一个N维数组类型ndarray,它描述了相同类型的“items”的集合。

  2. numpy.ndarray支持向量化运算。

  3. 其对数组的操作速度不再受python解释器限制,运算速度快。

numpy中的数组:

Numpy中的数组的使用跟Python中的列表非常类似。他们之间的区别如下:

  1. 一个列表中可以存储多种数据类型。比如a = [1,'a']是允许的,而numpy数组只能存储同种数据类型。
  2. 数组可以是多维的,当多维数组中所有的数据都是数值类型的时候,相当于线性代数中的矩阵,是可以进行相互间的运算的。

创建数组(np.ndarray对象):

#使用Python中的列表生成:

import numpy as np
a1 = np.array([1,2,3,4])
print(a1)
print(type(a1))

#使用np.arange生成,np.arange的用法类似于Python中的range:

np.arange与python中的range的区别如下:

    1、range()和np.arange()的返回类型不同,range()返回的是range;object,而np.arange()返回的是ndarray类型;
    2、range()不支持步长为小数,而np.arange()支持步长(step)为小数;
    3、range()可用于迭代,而np.arange作用远不止于此,它是一个序列,可被当做向量使用。

a2 = np.arange(2,21,2)
print(a2)
print(type(a2))

#使用np.random生成随机数的数组:

a1 = np.random.random((2,2)) # 生成2行2列的随机数的数组
a2 = np.random.randint(0,10,size=(3,3)) # 元素是从0-10之间随机的3行3列的数组
print(a1)
print(a2)

#使用函数生成特殊的数组: 

a1 = np.zeros((2,2)) #生成一个所有元素都是0的2行2列的数组
a2 = np.ones((3,2)) #生成一个所有元素都是1的3行2列的数组
a3 = np.full((2,2),8) #生成一个所有元素都是8的2行2列的数组
a4 = np.eye(3) #生成一个在斜方形上元素为1,其他元素都为0的3x3的矩阵

ndarray.dtype:
因为数组中只能存储同一种数据类型,因此可以通过dtype获取数组中的元素的数据类型。

a1 = np.array([1,2,3])
print(a1.dtype)
#指定dtype
a1 = np.array([1,2,3],dtype=np.int64)
# 或者 a1 = np.array([1,2,3],dtype="i8")
print(a1.dtype)
#修改dtype:
a1 = np.array([1,2,3])
print(a1.dtype)   #默认int32 
a2=a1.astype(np.int64)
print(a2.dtype)

ndarray.size:

获取数组中总的元素的个数。

a1 = np.array([[1,2,3],[4,5,6]])
print(a1.size) #打印的是6,因为总共有6个元素

ndarray.ndim:

数组的维数。

a1 = np.array([1,2,3])
print(a1.ndim) # 维度为1
a2 = np.array([[1,2,3],[4,5,6]])
print(a2.ndim) # 维度为2
a3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(a3.ndim) # 维度为3

ndarray.shape:

数组的维度的元组。

a1 = np.array([1,2,3])
print(a1.shape) # 输出(3,),意思是一维数组,有3个数据

a2 = np.array([[1,2,3],[4,5,6]])
print(a2.shape) # 输出(2,3),意思是二位数组,2行3列

a3 = np.array([
       [
           [1,2,3],
           [4,5,6]
       ],
       [
           [7,8,9],
           [10,11,12]
       ]
   ])
print(a3.shape) # 输出(2,2,3),意思是三维数组,总共有2个元素,每个元素是2行3列的

a4 = np.array(([1,2,3],[4,5]),dtype=object)
print(a4.shape) # 输出(2,),意思是a4是一个一维数组,总共有2列
print(a4) # 输出[list([1, 2, 3]) list([4, 5])],其中最外面层是数组,里面是Python列表

        ndarray.reshape来重新修改数组的维数。reshape并不会修改原来数组本身,而是会将修改后的结果返回。如果想要直接修改数组本身,那么可以使用resize来替代reshape。

a1 = np.arange(12) #生成一个有12个数据的一维数组
print(a1) 

a2 = a1.reshape((3,4)) #变成一个2维数组,是3行4列的,3*4=12
print(a2)

a3 = a1.reshape((2,3,2)) #变成一个3维数组,总共有2块,每一块是3行2列的,2*3*2=12,第一个表示几块,后两位表示每一块的行列
print(a3)

a4 = a2.reshape((12,)) # 将a2的二维数组重新变成一个12列的1维数组
print(a4)

a5 = a2.flatten() # 不管a2是几维数组,都将他变成一个一维数组
print(a5)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值