科学计算工具NumPy(1):ndarray的创建于数据类型

举报
DrugAI 发表于 2021/07/15 03:53:26 2021/07/15
【摘要】 科学计算工具NumPy(1):ndarray的创建于数据类型 科学计算工具NumPy(2):ndarray的矩阵处理  科学计算工具NumPy(3):ndarray的元素处理 Numpy(Numerical Python) Numpy:提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩...

科学计算工具NumPy(1):ndarray的创建于数据类型

科学计算工具NumPy(2):ndarray的矩阵处理

 科学计算工具NumPy(3):ndarray的元素处理

Numpy(Numerical Python)

Numpy:提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。本身是由C语言开发,是个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础。

  • 高性能科学计算和数据分析的基础包

  • ndarray,多维数组(矩阵),具有矢量运算能力,快速、节省空间

  • 矩阵运算,无需循环,可完成类似Matlab中的矢量运算

  • 线性代数、随机数生成

  • import numpy as np
       

     

Scipy

Scipy :基于Numpy提供了一个在Python中做科学计算的工具集,专为科学和工程设计的Python工具包。主要应用于统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解、稀疏矩阵等,在数学系或者工程系相对用的多一些,和数据处理的关系不大, 我们知道即可,这里不做讲解。

  • 在NumPy库的基础上增加了众多的数学、科学及工程常用的库函数

  • 线性代数、常微分方程求解、信号处理、图像处理

  • 一般的数据处理numpy已经够用

  • import scipy as sp

ndarray的创建于数据类型

NumPy数组是一个多维的数组对象(矩阵),称为ndarray,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点。

注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型

ndarray拥有的属性

  1. ndim属性:维度个数
  2. shape属性:维度大小
  3. dtype属性:数据类型

ndarray的随机创建

通过随机抽样 (numpy.random) 生成随机数据。


      # 导入numpy,别名np
      import numpy as np
      # 生成指定维度大小(3行4列)的随机多维浮点型数据(二维),rand固定区间0.0 ~ 1.0
      arr = np.random.rand(3, 4)
      print(arr)
      print(type(arr))
      # 生成指定维度大小(3行4列)的随机多维整型数据(二维),randint()可以指定区间(-1, 5)
      arr = np.random.randint(-1, 5, size = (3, 4)) # 'size='可省略
      print(arr)
      print(type(arr))
      # 生成指定维度大小(3行4列)的随机多维浮点型数据(二维),uniform()可以指定区间(-1, 5)
      arr = np.random.uniform(-1, 5, size = (3, 4)) # 'size='可省略
      print(arr)
      print(type(arr))
      print('维度个数: ', arr.ndim)
      print('维度大小: ', arr.shape)
      print('数据类型: ', arr.dtype)
  
 

运行结果:


      [[ 0.09371338  0.06273976  0.22748452  0.49557778]
       [ 0.30840042  0.35659161  0.54995724  0.018144  ]
       [ 0.94551493  0.70916088  0.58877255  0.90435672]]
      <class 'numpy.ndarray'>
      [[ 1  3  0  1]
       [ 1  4  4  3]
       [ 2  0 -1 -1]]
      <class 'numpy.ndarray'>
      [[ 2.25275308  1.67484038 -0.03161878 -0.44635706]
       [ 1.35459097  1.66294159  2.47419548 -0.51144655]
       [ 1.43987571  4.71505054  4.33634358  2.48202309]]
      <class 'numpy.ndarray'>
      维度个数:  2
      维度大小:  (3, 4)
      数据类型:  float64
  
 

ndarray的序列创建

1. np.array(collection)

collection 为 序列型对象(list)、嵌套序列对象(list of list)。


      # list序列转换为 ndarray
      lis = range(10)
      arr = np.array(lis)
      print(arr) # ndarray数据
      print(arr.ndim) # 维度个数
      print(arr.shape) # 维度大小
      # list of list嵌套序列转换为ndarray
      lis_lis = [range(10), range(10)]
      arr = np.array(lis_lis)
      print(arr) # ndarray数据
      print(arr.ndim) # 维度个数
      print(arr.shape) # 维度大小
  
 

运行结果:


      # list序列转换为 ndarray
      [0 1 2 3 4 5 6 7 8 9]
      1
      (10,)
      # list of list嵌套序列转换为 ndarray
      [[0 1 2 3 4 5 6 7 8 9]
       [0 1 2 3 4 5 6 7 8 9]]
      2
      (2, 10)
  
 

2. np.zeros()

指定大小的全0数组。注意:第一个参数是元组,用来指定大小,如(3, 4)。

3. np.ones()

指定大小的全1数组。注意:第一个参数是元组,用来指定大小,如(3, 4)。

4. np.empty()

初始化数组,不是总是返回全0,有时返回的是未初始的随机值(内存里的随机值)。


      # np.zeros
      zeros_arr = np.zeros((3, 4))
      # np.ones
      ones_arr = np.ones((2, 3))
      # np.empty
      empty_arr = np.empty((3, 3))
      # np.empty 指定数据类型
      empty_int_arr = np.empty((3, 3), int)
      print('------zeros_arr-------')
      print(zeros_arr)
      print('\n------ones_arr-------')
      print(ones_arr)
      print('\n------empty_arr-------')
      print(empty_arr)
      print('\n------empty_int_arr-------')
      print(empty_int_arr)
  
 

运行结果:


      ------zeros_arr-------
      [[ 0.  0.  0.  0.]
       [ 0.  0.  0.  0.]
       [ 0.  0.  0.  0.]]
      ------ones_arr-------
      [[ 1.  1.  1.]
       [ 1.  1.  1.]]
      ------empty_arr-------
      [[ 0.  0.  0.]
       [ 0.  0.  0.]
       [ 0.  0.  0.]]
      ------empty_int_arr-------
      [[0 0 0]
       [0 0 0]
       [0 0 0]]
  
 

5. np.arange() 和 reshape()

arange() 类似 python 的 range() ,创建一个一维 ndarray 数组。

reshape() 将 重新调整数组的维数。


      # np.arange()
      arr = np.arange(15) # 15个元素的 一维数组
      print(arr)
      print(arr.reshape(3, 5)) # 3x5个元素的 二维数组
      print(arr.reshape(1, 3, 5)) # 1x3x5个元素的 三维数组
  
 

运行结果:


      [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
      [[ 0  1  2  3  4]
       [ 5  6  7  8  9]
       [10 11 12 13 14]]
      [[[ 0  1  2  3  4]
        [ 5  6  7  8  9]
        [10 11 12 13 14]]]
  
 

6. np.arange() 和 random.shuffle()

random.shuffle() 将打乱数组序列(类似于洗牌)。

 


      arr = np.arange(15)
      print(arr)
      np.random.shuffle(arr)
      print(arr)
      print(arr.reshape(3,5))
  
 

运行结果:


      [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
      [ 5  8  1  7  4  0 12  9 11  2 13 14 10  3  6]
      [[ 5  8  1  7  4]
       [ 0 12  9 11  2]
       [13 14 10  3  6]]
  
 

ndarray的数据类型

1. dtype参数

指定数组的数据类型,类型名+位数,如float64, int32

2. astype方法

转换数组的数据类型


      # 初始化34列数组,数据类型为float64
      zeros_float_arr = np.zeros((3, 4), dtype=np.float64)
      print(zeros_float_arr)
      print(zeros_float_arr.dtype)
      # astype转换数据类型,将已有的数组的数据类型转换为int32
      zeros_int_arr = zeros_float_arr.astype(np.int32)
      print(zeros_int_arr)
      print(zeros_int_arr.dtype)
  
 

运行结果:


      [[ 0.  0.  0.  0.]
       [ 0.  0.  0.  0.]
       [ 0.  0.  0.  0.]]
      float64
      [[0 0 0 0]
       [0 0 0 0]
       [0 0 0 0]]
      int32
  
 

参考资料

 

文章来源: drugai.blog.csdn.net,作者:DrugAI,版权归原作者所有,如需转载,请联系作者。

原文链接:drugai.blog.csdn.net/article/details/104268677

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。