利用Python进行数据处理1——学会使用NumPy

一.学会使用ndarray数组

1.1什么是ndarray?函数

ndarray是NumPy中的一种多维数组对象,他能够是一维的、二维的、甚至更多维次。固然建立更多维次的数组并非他的优势所在,他的优势在于它有丰富的运算方法,同时他也是另外一个高级Python库pandas的基础库,可是他只能存放同种类型的元素。学习

1. 2建立一个ndarrayspa

第一种建立方式有:直接使用列表建立ndarray,以下:code

#第一种直接经过列表建立
a_list=[0,1,2,3,4]
a_ndarray=np.array(a_list)#建立了一个一维的数组
print(type(a_ndarray))

 

上面建立了一个一维的数组,那么咱们也能够建立一个二维、三位的数组对象

来看下面的代码:blog

c_list=[[0,0],[1,1,1],[2,2]]#这是一个不规则的二维列表
c_ndarray=np.array(c_list)
print(c_ndarray)#输出数组

输出为:[list([0, 0]) list([1, 1, 1]) list([2, 2])]排序

第二种建立方式:建立指定形状指定初始值的数组ip

当咱们制定的初始值为0或者1时,咱们能够使用函数zeros或者ones这两个函数接受一个元组来表示这个数组的形状。pandas

代码以下:  

#建立指定形状和初始值的ndarray
d_ndarray=np.zeros(3)#指定初始值为0,初始形状为一维长度为3
print(d_ndarray)

输出的结果为:[0. 0. 0.]在这里咱们的元素类型为float

e_ndarray=np.ones((3,2))#建立一个数组3行2列
print(e_ndarray)

使用eye函数建立一个N*N的单位矩阵(对角线为1,其他的为0)

f_ndarray=np.eye(3,3)#建立3*3的单位矩阵
print(f_ndarray)

 

1.3判断ndarray的形状和元素类型

判断一个ndarray的形状使用ndarray的shape属性

e_ndarray=np.ones((3,2))
print(e_ndarray)
print(e_ndarray.shape)#输出形状

输出为:(3, 2)

判断一个ndarray的元素类型

e_ndarray=np.ones((3,2))
print(e_ndarray)
print(e_ndarray.dtype)#输出元素的类型

 输出为:float64

 1.4ndarray的运算

相乘:

a_ndarray=np.array([[1,2,3],[4,5,6]])
b_ndarray=np.array([[7,8,9],[10,11,12]])
c_ndarray=a_ndarray*b_ndarray#相乘
print(c_ndarray)

输出:[[ 7 16 27]
           [40 55 72]]

能够发现数组相乘是遍历数组的每个元素进行相乘。

相减:

a_ndarray=np.array([[1,2,3],[4,5,6]])
b_ndarray=np.array([[7,8,9],[10,11,12]])
c_ndarray=a_ndarray-b_ndarray#相减
print(c_ndarray)

输出:[[-6 -6 -6]
           [-6 -6 -6]]

对应的元素相减

取倒数:

d_ndarray=1/a_ndarray #取倒数
print(d_ndarray)

输出:[[1.         0.5        0.33333333]
      [0.25       0.2        0.16666667]]

乘方:.

e_ndarray=a_ndarray**2#乘方
print(e_ndarray)

输出:    [[ 1  4  9]
              [16 25 36]]
1.5ndarray的切片和拷贝
ndarray的切片和list的切片区别:

针对list:

a_list=[1,2,3,4,5]
print(a_list) #第一次输出
b_list=a_list # 直接赋值
b_list[0]=0
print(a_list)  #第二次输出

输出:[1, 2, 3, 4, 5]
   [0, 2, 3, 4, 5]

发现经过直接赋值list,改变其中一个另外一个也会改变。

a_list=[1,2,3,4,5]
print(a_list)#第一次输出
c_list=a_list[0:len(a_list)] # 使用切片
c_list[0]=0
print(a_list)#第二次输出

输出:[1, 2, 3, 4, 5]
           [1, 2, 3, 4, 5]

咱们发现list切片是不会改变原来的元素的,就是完成了一次拷贝将拷贝的list传给了新的list

针对ndarray的切片:

a_list=[1,2,3,4,5]
a_ndarray=np.array(a_list)
b_ndarray=a_ndarray[0:len(a_list)]
print(a_ndarray)#第一次输出
b_ndarray[0]=9
print(a_ndarray)#第二次输出

输出:[1 2 3 4 5]
   [9 2 3 4 5]

咱们发现ndarray中的切片赋值也是只是建立了一个新的引用指向原来的对象。

那么在ndarray中想要拷贝就须要用到copy函数,以下:

a_list=[1,2,3,4,5]
a_ndarray=np.array(a_list)
b_ndarray=a_ndarray.copy()
print(a_ndarray)#第一次输出
b_ndarray[:]=9
print(a_ndarray)#第二次输出

输出:[1 2 3 4 5]
   [1 2 3 4 5]

1.6数组的转置:

# 数组的转置
import numpy as np
a_ndarray=np.array([[0,0,0],[1,1,1],[2,2,2]])
print(a_ndarray)
b_ndarray=a_ndarray.T#转置
print(b_ndarray)

输出:[[0 0 0]
      [1 1 1]
      [2 2 2]]
           [[0 1 2]
           [0 1 2]
           [0 1 2]]
1.7精确到元素级别的运算函数

常见一元函数(接受一个数组的函数)有:

abs                    取绝对值

sqrt                    开方

square     平方

exp           计算各个元素的指数

log  log10  log2   去对数底数分别为e、十、2

ceil                      返回大于等于x的最小值

floor                    返回小于等于x的最大值

rint                      将各个元素进行四舍五入获得最接近的整数

isnan                   返回一个bool型数组表示那些是数组            

sum                     求和

mean                   算术平均数

std  var                标准差  方差

min  max               最值

sort                       排序

常见的二元的函数(接受两个数组的函数)有:

add                      两个数组对应元素相加

subtract               第一个数组减去第二个数组

multiply                数组元素相乘

1.8直接将txt文件中的内容转入到ndarray数组中

使用函数loadtxt能够将文件中的数据导入ndarray中:

import numpy as np
a_ndaarray=np.loadtxt(r"E:\PythonWork\py学习\test",delimiter=',',encoding='GBK')
print(a_ndaarray)

输出为:

同理savetxt函数是将数组存储到txt文件中

1.9线性代数中的数组(矩阵)运算

diag      返回一个一维数组表示一个矩阵的对角线

T           矩阵转置

dot        矩阵乘法

trace     计算对角线元素的和

det       计算矩阵的行列式

eig        计算矩阵的特征向量

相关文章
相关标签/搜索