Numpy & Pandas入门

Numpy & Pandas入门

学习莫烦PYHTHON的简单学习笔记

安装

pycharm –> preference –> project Interpreter –> 左下角的加号 –> 弹出搜索框搜索 –> install Package
所有第三方模块的安装都可以通过这种办法。
版本是pycharm 2018.1.1

numpy

基础运算1

array()

将传入的参数转化为矩阵
A = np.array([[1,2,3],[5,6,7]])

属性

print(A.ndim) #维度
print(A.shape) #行数, 列数
print(A.size) #元素个数

指定数据类型

A = np.array([[1,2,3],[5,6,7]], dtype=int)
numpy有很多数据类型,可以在此指定。

创建全零矩阵

a = np.zeros((3, 4))

创建全1矩阵

a = np.ones((3, 4))

创建全空矩阵

a = np.empty((5, 6))
其中的元素都是接近于0的数。

arange()

创建连续数组,可指定步长

reshape改变数据的形状

https://blog.csdn.net/xiaoqinting2015/article/details/69936952
如果shape参数的最后边是0,代表可以自动推测出该数值大小。
np.reshape(a,(2, -1))

linspace创建等差数列

print(np.linspace(0,10,5))

基础运算2

乘法:

a * b 点乘
numpy.dot(a, b)矩阵乘法
a.dot(b)矩阵乘法
b**2b矩阵各个元素的平方,双星符号

axis参数

在sum()、min()、max()中,参数axis:
axis = 0:按列查找
axis = 1:按行查找

最小元素索引与最大元素索引
print(np.argmin(A))  
print(np.argmax(A))  

这个索引是从第一个元素开始,按照行排序,如下所示:

0 1 2 3
4 5 6 7
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]

所以这个矩阵的输出结果是:

0
11

但是还有一套索引,分为一维索引和多维索引。见下。

累加函数

a.cumsum()
numpy.cumsum(a)
原矩阵首项加到对应项的元素之和。
是一个行向量,元素个数与原矩阵元素个数相同。

累差函数

每一行,后一项与前一项之差。
比原矩阵少一列。
numpy.diff(a)

nonzero()

B = np.nonzero(A)
将矩阵A的所有非零元素提出来,将这些非零元素的行坐标作为一个行向量,非零元素的列坐标作为第二个行向量。

(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]))
#前一个是行,后一个是列
sort()

对矩阵按行排序。
也就是对每一行进行排序。行与行之间不排序。
np.sort(A)

转置

两种转置:
np.transpose(A)
A.transpose()
A.T
A.T不支持一维数组的转置。
np.transpose(A)也不支持,因为一维数组就一个轴。
四种一维数组转置的办法:

#一种一维矩阵的转置方法     
#不懂这种玩法
D = np.arange
print(D)     
F = np.transpose([D])  # []
print(F)     
#reshape转置一维向量
A = np.array([1,2,3])            
print(A.reshape(len(A), -1))     
A = np.array([1,2,3]) 
print(A[:, None])     

第二种、第三种、第四种办法(下边的newaxis)是给矩阵增加了一个轴。矩阵仍然是原来的那个矩阵,A和B仍然指向同一个地址。改变A,输出B,结果根据A的改变发生变化。
第一种办法复制了另一个矩阵出来。

A = np.array([1,2,3])    
print(A.shape)           
B = A[:, None]           
print(B.shape)           

输出:

(3,)
(3, 1)
newaxis()

axis是轴心的意思。
对于一维向量。可以利用newaxis()完成转置。

D = np.arange(30, 10, -2)                  
print(D)                                   
print(D[np.newaxis, :])  # 轴心不变,不转置        
print(D[:, np.newaxis])  # 轴心变到另一个纬度,转置    
换轴心transpose()

转置是换轴心的一种情况。
https://blog.csdn.net/u012762410/article/details/78912667

clip()

clip(Array,Array_min,Array_max)
把矩阵中比最小值小对元素变成最小值;比最大值大对变成最大值。剪掉了蛇的头和尾巴。剃头。

索引

下标都是从0开始的。

一维索引

对一维向量:
a[2]就是从左往右第三个元素。
对二维矩阵:
a[2]是第三行。
对三维矩阵:

二维索引

对二维矩阵:
二维索引定位到一个元素
可以利用切片

for循环是按行输出矩阵。
如果要按列输出矩阵,可以先将矩阵转置。

flatten

将矩阵展开成一个一维向量。
a.flatten()

flat

和flatten功能一样,但是flat是一个迭代器,需要的时候才迭代输出元素。

for item in A.flat
    print(item)   

输出:

2
3
4
5
6
7
8
9
10
11
12
13

合并矩阵

np.vstack((A, B))

将两个矩阵上下合并。
np.vstack((A, B))

np.hstack((A, B))

将两个矩阵左右合并。
np.hstack((A, B))

concatenate()

合并矩阵
concatenate((A, B), axis = 0)
axis = 0 :上下合并;
axis = 1 :左右合并;

分割矩阵

np.split()

A = np.arange(2, 14).reshape((3, 4
print(np.split(A, 4, axis=1))     

axis = 0 :横向分割
axis = 1 :纵向分割
中间的参数叫indices or sections,也就是分的块数。
只能等量分割。一个一行四列的矩阵不能纵向分割成三块。

vsplit()

np.vsplit(A, 3)
split的axis为0的情况。

hsplit()

np.hsplit(A, 2)
split的axis为1的情况。

array_split() 不等量分割矩阵

np.array_split()

A = np.arange(2, 14).reshape((3, 4))   
print(np
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值