科学计算工具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方法

转换数组的数据类型

# 初始化3行4列数组,数据类型为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

参考资料

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

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

    科学计算工具NumPy(1):ndarray的创建于数据类型 科学计算工具NumPy(2):ndarray的矩阵处理 科学计算工具NumPy(3):ndarray的元素处理 元素计算函数 ceil() ...

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

    科学计算工具NumPy(1):ndarray的创建于数据类型 科学计算工具NumPy(2):ndarray的矩阵处理 科学计算工具NumPy(3):ndarray的元素处理 ndarray的矩阵运算 ...

  3. python矩阵sin计算器_Python科学计算工具

    Python科学计算工具-Numpy入门 2017.07.02 20:29:14字数 1,404阅读 2,509 一:前言 学了中国大学mooc的Python数据分析与展示课程感觉挺不错的,记录下来以 ...

  4. 一文带你熟悉简单实用的Python科学计算库NumPy

    Python科学计算库NumPy 安装 数组的创建 array创建 **arange** 创建 **随机数创建** 方法numpy.random.random(size=None) 方法numpy.r ...

  5. AI常用框架和工具丨1. 科学计算库NumPy

    科学计算库NumPy,AI常用框架和工具之一.理论知识结合代码实例,希望对您有所帮助. 文章目录 环境说明 一.NumPy简介 二.数组 2.1 NumPy数组的优势 2.2 ndarray对象 2. ...

  6. numpy 创建加一行_数据科学|可视化图解Python科学计算包Numpy

    文章申明 文章作者:梁斌伟 责任编辑:郭德真 微信编辑:玖蓁 本文转载自公众号 实战统计学 (ID:statrcn) 原文链接:可视化图解Python科学计算包NumPy 作者:梁斌伟 编者按: 你真 ...

  7. 【转】5.3 Python的科学计算包 - Numpy

    numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算.这个库的前身是1995年就开始开发的一个用于数组运算的库.经过了长时间的发展,基本上成了 ...

  8. numpy不用科学记数发 python_Python科学计算库Numpy常用的函数使用

    林小森博客: Python科学计算库Numpy常用的函数使用 - 林小森​www.linxiaosen.com Numpy具有强大的计算功能,本文介绍Numpy常用的函数,可以有效的提高工作效率. 首 ...

  9. python矩阵运算法则_导数与梯度、矩阵运算性质、科学计算库numpy

    一.实验介绍 1.1 实验内容 虽然在实验一中我想尽量少的引入(会让人放弃继续学习的)数学概念,但我似乎还是失败了.不过这几乎是没有办法的事,要想真正学会深度学习,没有一定的数学基础(高等数学.线性代 ...

最新文章

  1. php imagecopy 用法,php使用imagecopymerge()函数创建半透明水印
  2. BZOJ 4212: 神牛的养成计划
  3. [转]SQL交叉表实例
  4. CakePHP 2.10.17 发布,PHP 快速开发框架
  5. global.asax不执行原因
  6. STM32F103mini教程学习总结与心得(四)---->看门狗
  7. python和c++哪个好-C#、C++、Java、Python 选择哪个好?
  8. 设计模式之观察者Observer
  9. linux该专接本还是工作_先专接本还是先工作?
  10. CoolHC Volume 1 By CoolFire
  11. html小米秒杀倒计时,JavaScript_JQuery仿小米手机抢购页面倒计时效果,1、效果及功能说明 通过对时 - phpStudy...
  12. 应对雾霾,哪款口罩适合你?
  13. 爆音(杂音)问题的推论与解决
  14. RecyclerView 删除元素后,点击报 IndexOutOfBoundsException 解决方法
  15. java半角英数check_jQuery教程之输入内容控制为半角英数字+限定符号问题如何解决...
  16. x射线图像去坏点算法
  17. 为黑客打工能挣多少?月薪最高达2万美元
  18. c语言int作用,c语言中int的用法
  19. Nginx 502的解决方法
  20. 爬楼梯/青蛙跳台阶,不会还有人不会吧

热门文章

  1. Premiere做影片时四周的黑框
  2. 边缘营销——小计谋大智慧(二)
  3. MySQL基础篇:数据操作语言DML
  4. 某程序员吐槽:提离职后领导开始演戏,假装不知道我工资低,对我进行挽留,怎么办?...
  5. Ingress 继任者 Gateway API 使用
  6. 宠粉福利,100G网盘最新架构技术资料合集限时领
  7. 线上发生死锁异常了,该怎么办
  8. 某面试官面试一个百度T7程序员,出了一道这样的coding题!T7竟不会!被面试官嘲笑!...
  9. 优秀员工应该具备的11个特质
  10. 腾讯会跟中国移动一样慢慢衰落么