python数据分析--Numpy

Numpy,全称Numeric Python,是一个开源的Python科学计算库。

最近做项目老是用到,感觉还是挺简单的,决定了解一下,依然是看的莫烦python教学视频,这篇文章是从中总结的知识要点。

1,array的创建

array是数组的意思,一维数组就是[1,2,3]这样的,二维就可以说是矩阵了,[[1,2,2],[3,3,3]]。
利用numpy我们可以创建array。
 
import numpy as np

#创建array
利用array把list转变为array
a = np.array([[1,22,3],[1,4,5]])
print(a)

输出结果是生成了一个2维矩阵。数字之间是没有逗号的,这是array和list之间的最大差别。

python数据分析--Numpy

而且还可以自定义array中元素的类型,默认是int64位或者32位,若要改动,就是np.array([2,23,24],dtype=int16)。

还可以生成都为1,0或者空的array。

b = np.zeros((3,4))#三行四列
c = np.ones((3,4))
d = np.empty((2,3))#空矩阵的意思是生成元素非常接近于0

利用arange创建array也是很方便的,arange和range是类似的用法。

e = np.arange(12,20,2)#12到19,步长为2的array
f = np.arange(12).reshape(3,4)#reshape的作用是将生成的一维array形状变化为3行四列
g = np.linspace(1,10,4)#1-10分成4段

运行结果如下:

python数据分析--Numpy

np.array(4),运行结果就是0-3,步长为1的数组。

查看array的属性也很简单。

array.ndim

array.shape

array.size

分别是维度,形状,元素个数。

 

a = np.random.random((2,4))#随机生成的2行4列的array,每个元素都在0-1之间。

2.numpy中的基本运算

加减都一样,这里不提了。乘方的话不同于其他语言的^2,^要用**来代替。

关于乘法,用*都是对应元素相乘,若要用矩阵乘法,应该为:np.dot(a,b) or a.dot(b)

三角运算:np.sin(a), cos,tan同理。

判断大小:print(A<5)#判断array中各个元素是否小于5。返回值是布尔值。

计算和:np.sum(a)

计算最大值,最小值:

np.min(a)

np.max(a)

返回最大值索引:np.argmax(a)

排序:np.sort(a)

转置:np.transpose(a)

a.T也可以

将某一区间的数留下:np.clip(A,5,9)#把array A中的小于5的数变成5,大于9的数变成9。

还有mean,median,cumsum(累加和),diff(累差)等,都是一样的方式。

如果只想计算行的和或者行中,列中最大值最小值的话,加上axis=0或者1即可。

0是按列,1是按行。

比如:

a = np.array([[1,22,3],[1,4,5]])
print(np.sum(a,axis=1))
print(np.sum(a,axis=0))

输出结果为:

python数据分析--Numpy

3.numpy中的基本操作

numpy中有取值,合并,分割,复制等操作。

取值:

按照索引取值。

比如a[1],对于一维array来说,就是取索引为1的元素。对于二维array来说,就是取行数的索引为2的一行元素。

a[1][1]就是取一行一列的元素。

a[4,;]取前四行所有元素

a[:,4]取前四列所有元素

a[1,2:4]取一行的2-3索引值的元素

a[1:2,3:4] 取索引值为1的行,以及该行索引值为3的元素

 

合并:

a = np.array([[1,22,3],[1,4,5]])
b = np.array([[1,44,3],[1,4,2]])
print(np.vstack((a,b)))#上下合并
print(np.hstack((a,b)))#左右合并
print(np.concatenate((a,b,a,b),axis=0))#多个合并

结果为:

python数据分析--Numpy

 

分割:

a = np.array([[1,22,3,8],[1,4,5,8],[4,5,6,8]])
b = np.array([[1,44,3],[1,4,2],[5,7,8]])

print(np.split(a,2,axis=1))#纵向分割
print(np.array_split(a,2,axis=0))#横向分割
print(np.vsplit(a,3))#横向分割
print(np.hsplit(b,3))#竖向分割


结果为:

python数据分析--Numpy

 

复制:

copy和deep copy

b = a 把a赋值给b,那么对b的所有操作,都会同步在a上发生。

b = a.copy()# deep copy  就不会有连带关系

 

以上就是numpy的简单操作。