Numpy入门笔记

Numpy

NumPy是一个功能强大的Python库,主要用于对多维数组执行计算。

NumPy 中的数组

一维数组

定义数组

import numpy as np 
a = np.array([1, 2, 3, 4, 5]) 
b=np.arange(5) 				 #从0开始取整,不包括最后一位
c= np.linspace(0, 100, 5) 	 #从0-100平均分成5分

输出结果:

a=[1,2,3,4,5]    b=([0, 1, 2, 3, 4])    c=([0,25,50,75,100])

矩阵

a = np.array([[1, 2, 3, 4, 5],
          [6, 7, 8, 9, 10],
          [11, 12, 13, 14, 15],
          [16, 17, 18 ,19, 20],
          [21, 22, 23, 24, 25]])
          print(a[2,4])  	 # a的第3行第5列  a[2,4]=15
          print(a[0, 1:4])   #a的第一行 第2-4列(1:4 包含头部 不包括尾部)  a[0, 1:4]=[2,3,4]
		 print(a[::2,::2])   # 每隔两行取一行 , 每隔两列取一列   a[::2,::2] =([[1,3,5],[11,13,15],[21,23,25]])
		 print(a.shape)  	 #shape属性 描述的是a的尺寸 (5,5)

数组操作

普通运算——对应元素操作

import numpy as np 
a = np.array([[1.0, 2.0], [3.0, 4.0]]) 
b = np.array([[5.0, 6.0], [7.0, 8.0]]) 
sum=a+b
difference = a - b 

输出结果:

sum=[[6,8]        
	[10,12]] 

difference=[[-4,-4]
		[-4,-4]]

如果想要运用矩阵乘法

	a.dot(b) 

Numpy 基础函数

数组特殊运算符

a = np.arange(10)
print(a.sum()) # >>>45
print(a.min()) # >>>0
print(a.max()) # >>>9
print(a.cumsum()) # >>>[ 0  1  3  6 10 15 21 28 36 45]

reshape

a=np.arange(25)
print(a)      #              array([ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])
a.reshape(5,5)      #  将a整合成5*5的矩阵

zeros
使用zeros函数创建一个填充零的数组。函数的参数表示行数和列数(或其维数)。

np.zeros((2,4)) #>>生成一个2行4列填充零的数组

ones
使用ones函数创建一个填充零的数组。函数的参数表示行数和列数(或其维数)。

np.ones((2,4)) #>>生成一个2行4列填充1的数组

eye
eye函数可以创建一个n * n矩阵,对角线为1,其他为0。

文件存取

NumPy提供了多种文件操作函数方便我们存取数组内容。文件存取的格式分为两类:二进制和文本。而二进制格式的文件又分为NumPy专用的格式化二进制类型和无格式类型。
使用数组的方法函数tofile可以方便地将数组中数据以二进制的格式写进文件。tofile输出的数据没有格式,因此用numpy.fromfile读回来的时候需要自己格式化数据:

numpy.load和numpy.save函数以NumPy专用的二进制类型保存数据,这两个函数会自动处理元素类型和shape等信息,使用它们读写数组就方便多了,但是numpy.save输出的文件很难和其它语言编写的程序读入:

>>> a = np.arange(0,12)
>>> a.shape = 3,4
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> np.save("a.npy", a)
>>> c = np.load( "a.npy" )
>>> c
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])

ufunc运算简介

由于Python中的布尔运算使用and、or和not等关键字,它们无法被重载,因此数组的布尔运算只能通过相应的ufunc函数进行。

>>> a = np.arange(5) 
>>> b = np.arange(4,-1,-1) 
>>> a == b 
array([False, False, True, False, False], dtype=bool) 
>>> a > b 
array([False, False, False, True, True], dtype=bool) 
>>> np.logical_or(a==b, a>b) # 和 a>=b 相同 array([False, False, True, True, True], dtype=bool)

可以使用数组的any()或all()方法。只要数组中有一个值为True,则any()返回True;而只有数组的全部元素都为True,all()才返回True。

>>> np.any(a==b)
 True 

>>> np.any(a==b) and np.any(a>b)
 True

最值和排序

数组的sort()方法用于对数组进行排序,它将改变数组的内容。而sort()函数则返回一个新数组,不改变原始数组。它们的axis参数默认值都为-1,即沿着数组的最后一个轴进行排序。 sort()函数的axis参数可以设置为None,此时它将得到平坦化之后进行排序的新数组。

>>> np.sort(a) #对每行的数据进行排序

>>> np.sort(a, axis=0) #对每列的数据进行排序

用median()可以获得数组的中值,即对数组进行排序之后,位于数组中间位置的值,当长度是偶数时,得到正中间两个数的平均值。

你可能感兴趣的:(Numpy入门)