Python学习笔记(二)——NumPy

Python可以用List当数组用,但是由于List的元素可以是任意对象,因此保存一个List需要保存所有指针和元素。非常消耗内存。

本文学习博客:用Python做科学计算 整理笔记,以待备用。

首先是NumPy函数库导入

importnumpy as np

创建数组

array

使用array可以创建多维数组

a = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9,10]])

shape

使用shape可以获得数组维数

a.shape
(3,4)

reshape

使用reshape以改变数组的尺寸

b=a.reshape((2,6))

但是要注意:这两个数组共享内存,修改其中一个,另一个也将发生变化。

创建数组的专门函数

arange:指定开始值、终值(不包括)、步长

np.arange(0,10,1.5)
array([ 0. , 1.5,  3. ,  4.5, 6. ,  7.5,  9. ])

linspace:指定开始值、终值(包括)、元素个数的等差数列

np.linspace(0,10,7)
array([0., 1.66666667, 3.33333333, 5., 6.66666667, 8.33333333,10.)

logspace: 指定开始值、终值(包括)、元素个数的等比数列

np.logspace(0,1,7)
array([1., 1.46779927, 2.15443469, 3.16227766,4.64158883, 6.81292069, 10.])

存取元素

-整数序列

a=np.arange(10,1,-1)
b=a[4,4,4,-2]
b
array([6,6,6,3])

注意:b和a不共享内存,所以改变其中任一个,另一个不会跟着改变。

-布尔数组

收集数组中对应下标为True的元素。

a=np.arange(5,0,-1)
a[np.array([True, True, True,False, False])]
array([5,4,3])

注意:

1.两数组不共享内存。

2.只可对应于布尔数组,而不能是布尔列表a[ [True, True, True,False,False]]

否则输出应为

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

结构数组

创建dtype对象,字典有两个关键字:names,formats。

import numpy as np
people=np.dtype({
                 ‘names’:[‘name’,’ gender’]
                 ‘formats’:[‘S32’,’S32’]})
a=np.array([(‘LiuJingjing’,’Female’),(‘ChengYin’,’Male’)],dtype=people)

ufunc运算

x=np.linspace(0,np.pi,10)
t=np.sin(x,x)

这里sin的第二个参数是用来存结果的,上式表明x已经被覆盖了,与t的效果一样。

广播

广播就是数组大小不同,让他们看齐运算。

a=np.arange(10,70,10).reshape(-1,1)
b=np.arange(1,6)
c=a+b
c
array([[11, 12, 13, 14, 15],
       [21,22, 23, 24, 25],
       [31,32, 33, 34, 35],
       [41,42, 43, 44, 45],
       [51,52, 53, 54, 55],
       [61,62, 63, 64, 65]])

矩阵乘积

dot、inner、outer

其中dot做内积、inner最后一维做内积、outer展成列向量和行向量做矩阵乘积。

欢迎参与讨论并关注本博客微博以及知乎个人主页后续内容继续更新哦~

转载请您尊重作者的劳动,完整保留上述文字以及文章链接,谢谢您的支持!

时间: 2024-10-13 00:59:54

Python学习笔记(二)——NumPy的相关文章

Python学习笔记<二>:列表、元组、字典

1 列表和元组 可以将列表和元组当成普通的"数组",它能保存任意数量任意类型的Python 对象.和数组一样,通过从0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象. 列表和元组有几处重要的区别.列表元素用中括号( [ ])包裹,元素的个数及元素的值可以改变.元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以).元组可以看成是只读的列表.通过切片运算( [ ] 和 [ : ] )可以得到子集,这一点与字符串的使用方法一样. 举例如下: >>>

python学习笔记(二)

一.版本问题 python2与python3是目前主要的两个版本. python3.0版本较之前的有很大变动,而且不向下兼容. Python 2.7作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移.即2.7版本兼容2.x和3.0的语法 Python 2.7保持了对之前版本的全兼容,而且还包含了Python 3.0的新玩意(一些新特性需要通过"from __future__ import"来启用). 如果想要在python2.7中使用:p

python学习笔记(二) - 函数

一. 调用函数 python内置了一些数据类型转换函数,比如int()函数可以把其他数据类型转换为整形 >>> int('123') 123 >>> int(12.34) 12 >>> float('12.34') 12.34 >>> str(1.23) '1.23' >>> unicode(100) u'100' >>> bool(1) True >>> bool('') Fal

python学习笔记二:IDE环境搭建

工欲善其事,必先利其器.每个IDE都有自己的优点,适合的才是最好的. [伯乐在线]Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程.Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE).这些 Python 开发工具帮助开发者加快使用 Python 开发的速度,提高效率.高效的代码编辑器或者 IDE 应该会提供插件,工具等能帮助开发者高效开发的特性.最好的 10 款 Python IDEs,这里详细介绍前两

python学习笔记二:流程控制

一.if else: #!/usr/bin/python x = int(raw_input('please input:')) if x >= 90: if x >= 95: print 'a+' else: print 'a' elif x >= 80: if x >= 85: print 'b+' else: print 'b' elif x >= 70: if x >= 75: print 'c+' else: print 'c' else: if x >

python学习笔记(二):python数据类型

上一篇博客写了python的入门和简单流程控制,这次写python的数据类型和各种数据类型的内置方法.一.数据类型是什么鬼?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.二.整形和浮点型整形也就是整数类型(int)的,在python3中都是int类型,没有什么long类型的,比如说存年龄.工资.成绩等等这样的数据就可以用int类型,有正

python学习笔记二:if语句及循环语句,断点,模块,pyc

if语句 注意:语句块中的内容要强制缩进,否则出错.IndentationError,缩进错误 所有代码,如果是顶级的,必须顶格写,前面不能有空格 if - : - elif - : - else: - while语句 while -: - else: - for语句 for i in range(10)--i默认0,步长默认1,最大为9 for i in range (0,2,10)--从0开始,步长为2,最大为8 for  i   in range(-): - else: - break--

Python学习笔记(二)Python语法_1

[[email protected] ~]# ipython In [1]: import platform In [2]: print platform.uname() ('Linux', 'kaibin.test1', '2.6.32-431.el6.x86_64', '#1 SMP Fri Nov 22 03:15:09 UTC 2013', 'x86_64', 'x86_64') In [3]: dir(platform)        #查看platform支持的功能:dir(plat

python学习笔记二

1.python中的几种变量 1)__x 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问 双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是.不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量 2) __x__需要注意的是,在P

python学习笔记二--列表

一.列表: 1. 任意类型对象的位置相关的有序集合. 2. 没有固定大小. 3. 对偏移量进行赋值及各种方法的调用,修改列表. 4. 列表是序列的一种. 5. 所有对字符串的序列操作对列表均适用. 二.对列表做索引,分片 三.调用内置的函数及方法 四.边界检查 五.嵌套 六.列表解析: 1. 把M里每一行的偏移量为1的元素取出来,并赋值给col2 2. 把M里每一行的偏移量为1的元素取出来并+1 把M里每一行的偏移量为1的元素取出来并取2的余数为0的元素 3.