这是Numpy学习系列第二部分,第一部分见Numpy-1

4. Array对象的存取

4.1 Array的Indexing,Slicing,Iterating

该部分集中在Numpy的array数据的存取,类似与pyhton的list的索引、切片等

>>>import numpy as np

>>>a = np.arange(8)

>>>a, a[0], a[5]

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

>>>a[1:5]

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

>>>a[:-1]

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

>>>a[::-1]

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

>>>a[5:1:-2]

array([5, 3])

>>>a[::3] = -100

>>>a

array([-100, 1, 2, -100, 4, 5, -100, 7])

>>># iterat, Array对象也支持迭代协议

>>>for i in a:

... print(i * (1/3.))

-33.3333333333

0.333333333333

0.666666666667

-33.3333333333

1.33333333333

1.66666666667

-33.3333333333

2.33333333333

4.2 数据共享

与Python的list不同的是:通过下标、切片获取的新Array是和原Array共用一个数据空间,相当于引用.

>>>b = a[3:7]

>>>b

array([-100, 4, 5, -100])

>>>b[0] = 1

>>>a, b # a[3] <= b[0], a[3]=1

(array([-100, 1, 2, 1, 4, 5, -100, 7]),

array([ 1, 4, 5, -100]))

4.3 使用整数序列

Numpy除了可以使用类似Python的list方法获取元素外,还提供了整数序列和布尔数组获取元素. 它们均不与原Array共享数据空间.

使用整数序列时,将使用整数序列中的每个元素作为下标,整数序列可以使列表或数组.

>>># 获取a中下标为 0,1,1,0的元素,组成一个新Array,下标可以是负数

>>>a[[0, 1, 1, 0]], a[np.array([0, 1, 1, -1])]

(array([-100, 1, 1, -100]), array([-100, 1, 1, 7]))

>>>a[[0, 1]] = 10, 11 # 修改元素的值

>>>a

array([ 10, 11, 2, 1, 4, 5, -100, 7])

>>># a, b 不共享数据空间,修改b元素值并没有修改a的元素值

>>>b = a[[0, 1]]

>>>b[0] = 10000

>>>a, b

(array([ 10, 11, 2, 1, 4, 5, -100, 7]),

array([10000, 11]))

4.4 使用布尔数组

使用布尔数组作为下标获取新Array时,将布尔数组对应的下标为True的元素构成新Array. 注意两点:1. 不共享数据空间, 2. 只能使用布尔数组,不能使用布尔列表

>>># 注意以下两种的不同, list*2 相当于2个list相加,元素数为原来2倍,

>>># array*2则为array的乘法计算,为数据乘法计算,原始数相同,按整数数组取值

>>>a[np.array([True, False, True, False]*2)]

array([ 10, 2, 4, -100])

>>>a[np.array([True, False, True, False])*2]

array([ 2, 10, 2, 10])

>>># array数值计算,元素数相同,True实际数值为1,False为0

>>>np.array([True, False, True, False])*2

array([2, 0, 2, 0])

>>># 布尔数组修改元素

>>>a[np.array([True, False]*4)] = -1

>>>a

array([-1, 11, -1, 1, -1, 5, -1, 7])

布尔数组一般通过布尔运算获得的,如:

>>>a>2

array([False, True, False, False, False, True, False, True], dtype=bool)

>>>a, a[a>2]

(array([-1, 11, -1, 1, -1, 5, -1, 7]), array([11, 5, 7]))

这里仅集中在一维数组,下篇将涉及到多维数组的操作. 不过,对数组的存取方法以及共享情况都是一致的,特别是类似Python的list的切片等操作是共享数据空间(与list操作不同),整数序列和布尔数组的操作是不共享的.

python半径为2.11的圆球的体积_Python科学计算神器之Numpy-2相关推荐

  1. python半径为2.11的圆球的体积_python 学习笔记 11 -- 使用参数使你的程序变得更性感...

    当然,在之前的系列中,我已介绍如何给 Python 脚本传参,当然,今天不会继续介绍这么无聊的东东.首先使用 python 的sys.argv 传参的话,就固定了参数的个数.顺序以及格式,这么死的规定 ...

  2. python半径为2.11的圆球的体积_python数据分析第二版(11),利用,Python,进行,复现,十一...

    第12章 pandas高级应用 12.1 分类数据 有一些数据会包含重复的不同值的小集合的情况.可以用unique和value_counts进行分类提取. import numpy as np imp ...

  3. 编写python程序半径为2.11的圆球的体积_医学生理学(山东大学)知到智慧树题目答案...

    我们常吃的花生米是种子 [单选题]动机说出自(),他认为回忆痛苦的经验将使人回到不愉快的过去,为避免痛苦感受在记忆中的重现,人们常常对这些感受和经验加以抑制,使之不出现在意识中,由此引起遗忘. A. ...

  4. 基于python的风险管理方式属于_张家港高校邦_Python科学计算_网课答案

    张家港高校邦_Python科学计算_网课答案3rh4 张家港高校邦_Python科学计算_网课答案 关注公众号{帅搜}即可查询答案 支持:大学网课,智慧树,知到,超星,尔雅,学习通,选修课,公务员,外 ...

  5. 半径为2.11的圆球的体积python_python习题

    python习题 1.生成50个随机数,编写函数判断他们是否是奇数,是则不输出 方法一: 解析:先生成50个随机整数,然后进行判断是否为整数,是则加入列表result[],然后排序输出 import ...

  6. python科学计算模块有什么_Python科学计算—numpy模块总结(1)

    作为一个本科学数学专业,目前研究非线性物理领域的研究僧.用什么软件进行纯科学计算好,Fortran永远是第一位的:matlab虽然很强大,可以很容易的处理大量的大矩阵,但是求解我们的模型(有时可能是几 ...

  7. python 科学计算设计_Python科学计算——Data Structures

    为什么选择Python作为科学计算语言? 有关于Matlab和Python哪个更适合作为科学计算语言的争论已久,之所以选择Python作为首选的科学计算语言,不仅仅是因为它免费,开源,有很多优秀的库和 ...

  8. python【Numpy科学计算库】Numpy的超实用基础详细教程(看不懂你来打我)

    文章目录 Numpy简单介绍 1.Numpy是什么 2. 多维数组 numpy数据类型设定与转换 numpy索引与切片 多维数组索引.切片 数组文件输入输出 使用numpy.arange方法 使用nu ...

  9. python pip安装numpy_【风马一族_Python】 安装pip与Numpy

    ------------------------------------------------------------------------------------------------- 原因 ...

最新文章

  1. redis灵魂拷问:19图+11题带你面试通关
  2. 报错处理:sh: 1: Syntax error: “(“ unexpected
  3. 怎样批量获取文件名,批量提取文件名 文件名读取windows 批处理文件
  4. Apache-SimpleEmail 简单应用
  5. 深入进货单-价格跟踪----宇然电脑公司管理软件
  6. 实验五——循环结构学习总结
  7. python设置文件编码_python批量修改文件编码格式的方法
  8. java 视图解析器_SpringMVC——视图和视图解析器
  9. redistemplate使用_SpringBoot 使用 Redis 缓存
  10. 试述计算机控制系统的大致组成,试述工业计算机控制系统的组成及应用
  11. 脉歌蓝牙耳机线评测_漂亮的高音质蓝牙耳机 脉歌MACAW TX-90评测
  12. Rose双机热备两款软件原理介绍以及共享存储双机热备方案和镜像双机热备方案介绍
  13. 你不能访问此共享文件夹,因为你组织的安全策略的解决办法
  14. Mybatis的xml实用的一些技巧
  15. 商业智能系统在税务行业的应用
  16. 神经网络 语音识别,神经网络语音合成
  17. 切比雪夫阻抗变换器设计与仿真
  18. mybatis处理joda datetime
  19. 分享6个优质的黑科技APP,简约良心还免费
  20. 【React】Mobx

热门文章

  1. 两数之和、三数之和、四数之和、K数之和
  2. VB-Word添加页眉页脚
  3. OpenCL与OpenACC的安装
  4. 模拟HTTP请求, POST方法(附源码)
  5. cisp-信息安全保障
  6. 《PyTorch 深度学习实践》第10讲 卷积神经网络(基础篇)
  7. mysql新建用户、授予外网Ip访问权限
  8. 办公室计算机购置申请,关于办公室购置电脑的请示
  9. RSYNC 自动同步文件免密
  10. scandir函数详解