数据科学包day1


Python3中

numpy和pandas有什么用

基于c语言。应用到矩阵的计算

为什么用:效率高

NumPy(Numerical Python)

NumPy是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数

pandas

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

numpy基本属性,如何利用numpy

import numpy as np
array=np.array([[1,2,3],
                [2,3,4]])#把列表转化成一个数组
print(array)
print("number of dim:",array.ndim)
print("shape:",array.shape)
print("size:",array.size)

运行结果:

D:\ANACONDA\python.exe "F:/python_i learn/mypy_11.py"
[[1 2 3]
 [2 3 4]]
number of dim: 2
shape: (2, 3)
size: 6

定义一维array:

import numpy as np
a=np.array([1,3,4],dtype=np.int)#定义格式float32,int64,int32
print(a)
print(a.dtype)

定义二维矩阵:

import numpy as np
a=np.array([[1,3,4],
           [2,3,4]])

生成0矩阵:

import numpy as np
a=np.zeros((3,4))#三行四列的0矩阵

print(a)

生成全1的矩阵:

import numpy as np
a=np.ones((3,4),dtype=np.int16)#三行四列的全1矩阵
print(a)

生成一个有序数列(和range用法差不多)

import numpy as np
a=np.arange(10,20,2)
print(a)

输出结果:

[10 12 14 16 18]

生成一个数列,并重新定义它的shape:

import numpy as np
a=np.arange(12).reshape(3,4)
print(a)

生成一个线性数列,定义数列里有多少数:

import numpy as np
a=np.linspace(1,12,21)#1-10,有20个数
print(a)

numpy的基础运算 加减乘除,判断值的大小

import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
print(a,b)
c=a-b
d=a+b
e=a*b
print(c,d,e)
f=10*np.sin(a)
print(f)
print(b<3)
print(b==3)

运行结果:

[10 20 30 40] [0 1 2 3]
[10 19 28 37] [10 21 32 43] [  0  20  60 120]
[-5.44021111  9.12945251 -9.88031624  7.4511316 ]
[ True  True  True False]
[False False False  True]

矩阵运算:

import numpy as np
a=np.array([[10,20],
           [30,40]])
b=np.arange(4).reshape((2,2))
print("a:",a)
print("b:",b)
c_dot=np.dot(a,b)#矩阵相乘
c_dot2=a.dot(b)#矩阵相乘的第二种方法
c=a*b#逐个相乘
print("c:",c)
print("c_dot:",c_dot)
print("c_dot2:",c_dot2)

运算结果:

a: [[10 20]
 [30 40]]
b: [[0 1]
 [2 3]]
c: [[  0  20]
 [ 60 120]]
c_dot: [[ 40  70]
 [ 80 150]]
c_dot2: [[ 40  70]
 [ 80 150]]

最大值最小值:

import numpy as np
a=np.random.random((3,4))#三行四列的随机矩阵,数字都是0-1的
print(a)
print(np.sum(a))#矩阵里面每个数字相加
print(np.max(a))#矩阵里面的最大值
print(np.min(a))#最小值
print(np.sum(a,axis=1))#矩阵里每一行每个数字相加
print(np.sum(a,axis=0))#矩阵里每一列每个数字相加

矩阵计算2

import numpy as np
A=np.arange(14,2,-1).reshape((3,4))
print(np.argmin(A))#最小值的索引
print(A)
print(np.average(A))#求平均值
print(np.median(A,axis=1))#求列中位数
print(np.cumsum(A))#逐项累加
print(np.diff(A))#累差;后一项减去前一项
print(np.nonzero(A))#输出非零数所在的位置
print(np.sort(A))#逐行排序
print(np.transpose(A))#矩阵的转置
print(A.T.dot(A))#A的转置乘A本身
print(np.clip(A,3,7))#把所有小于3的换成3,大于7的换成7

索引

import numpy as np
A=np.arange(3,15).reshape(3,4)
print(A)
print(A[2][0])#索引第二行第0列
print(A[2,:])#索引第二行所有数
print(A[:,2])#索引第二列所有数
print(A[1,1:2])#索引第1行,第一列到第二列所有数

print(A.flatten())#返回一个变成一行的矩阵
for item in A.flat:
    print(item)

合并

import numpy as np
A=np.array([1,1,1])
B=np.array([2,2,2])
C=np.vstack((A,B))#上下合并A,B
D=np.hstack((A,B))#左右合并A,B
print(C,D)
print(A.shape,C.shape)
print(A.T)#并不能把横向数列变成竖向
print(A[:,np.newaxis])#变成一维列的矩阵

多个合并

import numpy as np
A=np.array([1,1,1])[:,np.newaxis]#把一维矩阵转置
B=np.array([2,2,2])[:,np.newaxis]
C=np.concatenate((A,B,B,A))#合并
print(C)

拆分

import numpy as np
A=np.arange(12).reshape((3,4))
print(A)
print(np.split(A,2,axis=1))#按行分割2块
print("上下拆分:",np.vsplit(A,3))#上下拆分
print("左右拆分:",np.hsplit(A,4))#左右拆分

拷贝

import numpy as np
a=np.arange(4)
print(a)
b=a
c=a
d=b
a[0]=5
print(a)
print(b,c,d)
d[1:3]=[22,33]
print(a,b,c,d)
b=a.copy()#deep copy
a[1]=15
print(a,b,c,d)

运行结果:

[0 1 2 3]
[5 1 2 3]
[5 1 2 3] [5 1 2 3] [5 1 2 3]
[ 5 22 33  3] [ 5 22 33  3] [ 5 22 33  3] [ 5 22 33  3]
[ 5 15 33  3] [ 5 22 33  3] [ 5 15 33  3] [ 5 15 33  3]

猜你喜欢

转载自blog.csdn.net/sinat_41901394/article/details/106973816
今日推荐