目录

  • 理论知识
    • Numpy介绍
      • 1 Numpy比python数组好在哪
      • 2 NumPy 大多数需要快速计算的部分都是用 C 或 C ++ 编写的。
      • 3 NumPy 的源代码位于这个 github 资料库中:https://github.com/numpy/numpy
    • Numpy引入
    • Numpy和Python Array(数组)之间重要区别
  • 代码操作
    • 1.创建ndarry对象

理论知识

Numpy介绍

NumPy 数值 Python(Numerical Python)是用于处理数组的 python 库。 由 Travis Oliphant 于 2005 年创建。

1 Numpy比python数组好在哪

在 Python 中,我们有满足数组功能的列表,但是处理起来很慢。NumPy 旨在提供一个比传统 Python 列表快 50 倍的数组对象。NumPy 中的数组对象称为 ndarray,它提供了许多支持函数,使得利用 ndarray 非常容易。

NumPy 比列表更快的主要原因:

**储存方式:**NumPy 数组存储在内存中的一个连续位置,因此进程可以非常有效地访问和操纵它们。这种行为在计算机科学中称为引用的局部性。它还经过了优化,可与最新的 CPU 体系结构一同使用。
矢量化:矢量化描述了代码中没有任何显示的循环,索引等。这当然是预编译的C代码幕后优化的结果。
广播:描述操作的隐式逐元素行为的术语。一般来说,在Numpy中,所有操作,不仅仅是算术运算,而是逻辑,位,功能等,都以这种隐式的逐元素方式表现,即它们进行广播。

2 NumPy 大多数需要快速计算的部分都是用 C 或 C ++ 编写的。

3 NumPy 的源代码位于这个 github 资料库中:https://github.com/numpy/numpy

Numpy引入

NumPy 通常以 np 别名导入。

import numpy as np

查看版本

print(np.__version__)

**Numpy提供多维数组对象,**各种派生对象(如掩码数组和矩阵),以及用于各种数组快速操作的API,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅里叶变换、基本线性代数、基本统计运算和随机模拟等。

Numpy包的核心是ndarray对象。它封装了python原生的同数据类型的n维数组。
ndarray 即n-dimension-array 的简写。
创建一个 ndarray 只需调用 NumPy 的 array 函数即可(后面会再说):

import numpy as np
a = np.array([[0,1,2],[3,4,5],[6,7,8]])
print(a)
type(a)

为了保证其性能优良,其中有许多操作都是代码在本地进行编译的。

Numpy和Python Array(数组)之间重要区别

1.Numpy数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长:使用pop(),insert(),append(),remove(),clear()函数操作)不同。更改ndarry的大小将创建一个新数组并删除原来的数组。

2.Numpy在数组中的元素都需要具有相同的数据类型,因此在内存中大小相同。 例外:Python的原生数组里包含了Numpy对象的时候,这种情况下就允许不同大小元素的数组。

3.Numpy数组有助于对大量数据进行高级数学和其他类型的计算。通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。

4.越来越多的基于Python的科学和数学软件使用Numpy数组,虽然这些工具通常都支持Python的原生数组作为参数,但它们在处理之前还是会将输入的数组转换为Numpy的数组,而且也通常输出Numpy数组。

代码操作

1.创建ndarry对象

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

实例:
array()函数,括号内可以是列表、元组、数组、迭代器,生成器等
1.1对于object

#列表
np.array([1,2,3,4,5])
type(np.array([1,2,3,4,5]))

输出:

numpy.ndarray
#元组
np.array((1,2,3,4,5))

输出:

array([1, 2, 3, 4, 5])
#迭代对象
np.array(range(10))

输出:

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.array([i**2 for i in range(10)])

输出:

array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])
#创建10以内的偶数的数组
np.array([i for i in range(10) if i%2 == 0])

输出:

array([0, 2, 4, 6, 8])

1.2 对于dtype
#列表中元素类型不相同


np.array([1,1.5,3,4.5,'5'])

结果全部改成字符串类型
输出:

array(['1', '1.5', '3', '4.5', '5'], dtype='<U32')

输入为整型

ar1 = np.array(range(10))
ar1

输出:

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

输入为浮点型

ar2 = np.array([1,2,3.14,4,5])
ar2

输出:

array([1.  , 2.  , 3.14, 4.  , 5.  ])

输入为二维数组:嵌套序列(列表,元组均可)

ar3 = np.array([[1,2,3],('a','b','c')])
ar3

输出:

array([['1', '2', '3'],['a', 'b', 'c']], dtype='<U11')

二维数组的维数不同

ar4 = np.array([[1,2,3],('a','b','c','d')])
ar4

输出:

array([list([1, 2, 3]), ('a', 'b', 'c', 'd')], dtype=object)

会有提醒:

C:\Users\14036\AppData\Local\Temp/ipykernel_19096/189647353.py:1: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.ar4 = np.array([[1,2,3],('a','b','c','d')])
ar4.shape

输出:两行一列,强制转化为1维

(2,)

设置数组元素类型


has_dtype_a = np.array([1,2,3,4,5],dtype='float')
has_dtype_a

输出:

array([1., 2., 3., 4., 5.])

1.3.对于copy
设置copy参数,默认为Ture

a = np.array([1,2,3,4,5])
b = np.array(a)
print('a:', id(a), ' b:',id(b))
print('以上可以看出a和b的内存地址')

输出:

a: 1894294250768  b: 1894294252208
以上可以看出a和b的内存地址

不使用ndarray,将a的值赋给b相当于列表的引用赋值

a = np.array([1,2,3,4,5])
b = a  #相当于列表的引用赋值
print('a:', id(a), ' b:',id(b))
print('以上可以看出a和b的内存地址')
a: 1894294252592  b: 1894294252592
以上可以看出a和b的内存地址

1.4.对于ndmin
ndmin指定数组的维度

a = np.array([1,2,3])
print(a)
a = np.array([1,2,3],ndmin=2)
print(a)

输出:
a由一维数组变为2维数组

[1 2 3]
[[1, 2, 3]]

1.5.对于subok
subok参数,类型为bool值,默认为False.
若为True,使用object的内部数据类型;若为False:使用数组的数据类型
例子:

a = np.mat([1,2,3,4]) #创建一个矩阵
print(type(a))
#既要复制一份副本,又要保持原类型
at = np.array(a,subok=True)
af = np.array(a)print('at,subok为True:',type(at))
print('af,subok为False:',type(af))
print(id(at),id(af))

输出:

<class 'numpy.matrix'>
at,subok为True: <class 'numpy.matrix'>
af,subok为False: <class 'numpy.ndarray'>
1894294309568 1894294252688

1.6.对于order
order参数指定阵列的内存布局。当对象不是数组时, 除非指定” F”, 否则新创建的数组将以C顺序(行头或行主)出现。当指定F时, 它将按Fortran顺序(列标题或列主)。当对象是数组时, 它保持以下顺序。
默认为“K”
可以参考:
深入理解numpy库中的order参数

学习Numpy(一)相关推荐

  1. 学习Numpy,看这篇文章就够啦

    导读:在数据分析当中,Python用到最多的第三方库就是Numpy.本文内容是「大数据DT」内容合伙人王皓阅读学习<Python 3智能数据分析快速入门>过后的思考和补充,结合这本书一起学 ...

  2. 从入门到入土:机器学习part02|python|初步学习|numpy|Matplotlib

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  3. 数据分析 第四讲 numpy学习+numpy读取本地数据和索引

    文章目录 数据分析第四讲 numpy学习+numpy读取本地数据 一.numpy数组 1.numpy介绍 2.numpy基础 3.numpy常见的数据类型 4.数组的形状 5.数组的计算 6.数组的广 ...

  4. Python 学习 —— Numpy 、Pandas 傻傻分不清楚

    之前的文章里面谈到过,我从R转到Python上,一个很大的不习惯就是R的数据结构比较简单,但是Python的数据类型比较多,很容易就令人头脑混乱.但是今天学习了一下Udacity的课程,顿时就清楚多了 ...

  5. python 模块学习--Numpy

    Numpy是Python的一个科学计算库,提供了矩阵运算的功能.安装方法可以直接使用pip install numpy命令,也可以在http://sourceforge.net/projects/nu ...

  6. [转载] Python 学习 - Numpy

    参考链接: Python中的numpy.iscomplex Numpy 学习 Ndarray对象 特点 N 维数组对象 一系列同类型数据的集合 下标从0开始  每个元素在内存中占有相同存储大小  由什 ...

  7. 学习Numpy(五)

    目录 一.复习Numpy数组操作和字符串操作 1.修改数组形状 2.翻转数组 3.连接数组 4.分割数组 5.数组元素的添加与删除 6.NumPy 字符串函数 二.学习新知识 1.NumPy 统计函数 ...

  8. python学习--numpy的数组

    numpy中的数组类型为ndarry 创建 # -*- coding: utf-8 -*- import numpy as np#用列表或元组创建 a = np.array([[1,2,3],[4,5 ...

  9. python学习——numpy库

    属性: 维度 元素类型 大小 形状 创建一维 : np.arange np.linspace 注意range()只能for循环 创建零数组 一数组 单位数组 数组拼接: hstack vstack s ...

  10. Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了

    Numpy用法详细总结 一.创建ndarray及查看数据类型 1. 使用np.array()由python list创建 图片与array数组的关系 2. 使用np的常用函数创建 二.ndarray的 ...

最新文章

  1. 字字珠玑!任正非最新内部演讲:高科技急不来,股市为了圈钱夸大太多
  2. 砂.随笔.三十四.用时间在等待
  3. xss攻击汇总--转
  4. “保持耐心”,永远从用户角度出发— 专访阿里巴巴淘系技术内容中台负责人吴桂林(梁舒)...
  5. android底部弹出显示不全,Android 解决 NestedScrollView 底部内容被遮挡显示不全
  6. C#面试题 之 判断质数
  7. 1、maven笔记(一):构建项目
  8. webstorm怎么建php文件夹,webstorm怎么创建css
  9. JAVA中Calendar与Date类型互转
  10. 开源syslog服务器_开源API网关Kong基本介绍和安装验证
  11. Velocity-模板引擎(代码生成等)
  12. matlab求任意输入响应曲线,3.6 用Matlab进行动态响应分析
  13. [渝粤教育] 西南科技大学 民事诉讼法学 在线考试复习资料(1)
  14. 属性子集选择的基本启发方法_【数据挖掘笔记三】数据预处理
  15. uni-app获取当前位置并计算出某个地点距离
  16. 如何设置Windows文件夹背景为黑色?(其实就是“深色模式”)
  17. linux修改vnc设置密码,更改root与vnc密码,配置vnc
  18. 省市区三级级联JSON解析打印各级key及value
  19. 湖南省永州市谷歌高清卫星地图下载
  20. 2014,寻找企业信息管理软件的蓝海

热门文章

  1. 【Python学习】电子书
  2. zabbix的安装以及监控
  3. 聊聊前端技术的发展史
  4. Ceres 常用的优化手段
  5. UI 一些界面标准规范(来自因特网)
  6. Cannot save file. Sharing violation
  7. 查找搜狐文章里面插入的腾讯视频
  8. 鱼尾纹悄悄爬上大羽的脸[转]
  9. 泰坦机器人节目秀_明星机器人泰坦来丽江啦!
  10. 模仿米折网商品图片自动翻页效果