Python--学习笔记5 numpy

时间:2022-12-27 00:29:37

numpy是高性能科学计算和数据分析基础包。部分功能如下:

  • ndarray,具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组
  • 对于整组数据进行快速运算的标准数学函数
  • 用于读写磁盘数据的工具及用于操作内存映射文件的工具
  • 线性代数、随机数、傅里叶变换
  • 用于集成由C、C++、Fortran等语言编写的代码的工具

ndarray

使用array函数转化列表创建数组。

输入:

data1 = [6,7.5,8,0,1]

arr1=np.array(data1)
arr1

输出:

array([6. , 7.5, 8. , 0. , 1. ])

嵌套序列会转化为多维数组

 zeros和ones分别可以创建指定长度或者形状的全0或全1数组。empty可以创建没有任何具体值得数组。

 

dtype可以自定义数据类型,astype()可以更改数据类型。

strings= np.array(['1.25','-9.6','42'],dtype=np.string_)
strings.astype(float)

array([ 1.25, -9.6 , 42.  ])

 

索引和切片

跟列表的区别在于,数组的切片是原始数组的视图,视图上的任何修改都会直接反映到源数组上。

 布尔型索引:数组长度必须与索引轴长度一致。还可以通过布尔型数组设置值。

data = randn(7,4)

data[data<0]=0

 可以将data中所有的负值都设置为0.

通过布尔型索引选取的数组中的数据,将总是创建数据的副本。花式索引和切片不一样,它总是将数据复制到新数组中。


 

转置和轴兑换

转置是重塑的一种特殊形式,返回的是源数据的视图(不会进行任何复制操作)。数组不仅有transpose方法,还有特殊的T属性。

arr.T

在进行矩阵计算的时候,常用到该操作,比如使用np.dot计算矩阵内积XTX:

arr=np.random.randn(6,3)
np.dot(arr.T,arr)

可以进行基本数组统计方法,sum,mean,var,min,max等。

还可以叠加布尔型数组的方法进行计算。

arr=randn(100)

(arr >0).sum()


排序

和Python内置列表类型一样,numpy数组也可以通过sort进行排序。

 

针对一维数组ndarry的基本集合运算。常用的np.unique,用于找出数组中的唯一值并返回已排序的结果。

 


储存

np.save 和np.load是读写磁盘数组数据的两个主要函数。


 

范例:随机漫步

xrange()

xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器。 

>>>xrange(8)

xrange(8)

>>> list(xrange(8))

[0, 1, 2, 3, 4, 5, 6, 7]

>>> xrange(0,6,2)

xrange(0, 6, 2) # 步长为 2

>>> list(xrange(0,6,2))

[0, 2, 4]

 

import random
position =0
walk = [position]
steps = 1000
for i in range(steps):
  step = 1 if random.randint(0,1) else -1
  position +=step
walk.append (position)