numpy 使用总结(持续更新)

基于莫烦在youtube上发布的视频总结:

PS:最近干的事情:

1. 用两天面试了搜狐视频,下周入职,虽然投是java岗,最后是安排做数据整合。好处是所在的组毕竟是技术组,可以向周围大佬们好好学习,积攒脚本经验……所以,好好回顾了一下python。

2. 建议看中Udacity课程的同学们自己去youtube上搜一搜,说不定就有视频。此外我个人觉得内容有点太浅,数据分析师纳米学位提供的教程中很多地方讲的有些浮于表面。例如在机器学习的部分基本上就讲了怎么使用sklearn,其他的基本思想和大学课上老师讲的差不多。

3. 调试Python使用ipython+vim不能太爽。在pycharm中也有终端,配合使用能大大提高变成效率; 也可以用vscode,此处不得不说一声vscode真是神器……另外,喜欢把代码整理成文档的可以用ipython notebook,界面美观,还是基于浏览器的。

#-*- coding:utf-8 -*-
import numpy as np
array = np.array([[1,2,3],
                  [2,3,4]])
####### numpy 属性#########
print(array)
print "number of dimension: ", array.ndim
print "shape: ", array.shape
print "size: ", array.size
# 创建array
a = np.array([2,2,3,4])
print a
# 注意,和list不同的地方在于没有,分隔
a = np.array([2,2,3,4], dtype=np.int)
print a.dtype
# 生成1 
a = np.ones((3,4), dtype=np.int)
# 生成接近于0的矩阵
a = np.empty((3,4))
# 等差数列
a = np.arange(10,20,2)
# 同上
a = np.arange(12).reshape((3,4))
# 生成线段
a = np.linspace(1,10,5)

######## numpy 计算########
a = np.array([10,20,30,40])
b = np.arange(4)
c = a -b
c = 10*np.sin(a)
# 找到小于某一个值的元素
print b<3
# 矩阵运算
a = np.array([[1,1],[0,1]])
b = np.arrange(4).reshape(2,2)
b = np.arange(4).reshape(2,2)
# 逐个相乘
c = a*b
# 矩阵乘法
c_dot = np.dot(a,b)
c_dot_2 = a.dot(b)
# 随机生成
a = np.random.random((2,4))

# 进行计算
np.sum(a)
np.max(a)
np.min(a)
# 在某一行进行运算
np.sum(a, axis=0)
np.sum(a, axis=1)
# axis = 1 表示在列中计算
# axis=0在行中计算

A = np.arange(2,14).reshape(3,4)
# 计算平均值
mean = np.mean(A)
A.mean()
np.average(A)
# 求中位数
np.median(A)
# 累加
np.cumsum(A)
# 累差
np.diff(A)
# 找出非零数
np.nonzero(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]))
# 每行排序
np.sort(A)
# 矩阵反向(转置)
np.transport(A)
# clip功能
np.clip(A, 5, 9) # 保留5-9之间的数字

######### numpy索引 ########
A = np.arange(3,15).reshape(3,4)

## 访问
print A[2]
A[1][1]
# :代表的全部的数
A[1,:]

## 迭代
# 默认迭代的是行
for row in A:
    print row
# 迭代列
for column in A.T:
    print column
# 迭代全部项目
# flat迭代器
for i in A.flat:
    print i
# flatten()
print A.flatten()

## 合并
A = np.array([1,1,1])
B = np.array([2,2,2])
# 竖向合并(上下合并)
C = np.vstack((A,B))
# 横向合并(左右合并)
D = np.hstack((A,B)) # 由于此时AB为序列,合并为[1,1,1,2,2,2]

# 注意:不能把序列变为矩阵
A[np.newaxis,:] # 横向添加维度,把序列转换为矩阵
A[:,np.newaxis] # 纵向添加维度
A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
# 进行多个array的纵向、横向的合并
C = np.concatenate((A,B,B,A), axis=0) # 上下合并, 后一个指定方向

####### numpy分隔 #########
A = np.arange(12).reshape(3,4)

# 均匀分割
# 进行纵向分割
np.split(A, 2, axis=1)
# 进行横向分隔
np.split(A, 3, axis=0) # 进行纵向分割
# 不均匀分隔
np.array_split(A,3,axis=1)
# 少参数的api
np.vsplit(A,3)
np.hsplit(A,2)

####### numpy赋值#########
a = np.arrange(4)
# numpy array的性质
a = np.arange(4)
b = a # b是a的一个引用,a改变,b也改变
c = b # 同理
a[0]=11
b is a # True
c is a # True

## deep copy
# 不让二者关联在一起
b = a.copy()
a[0]=6
b is a # False

######## 补充 ###########
# 1. 使用argsort函数,对二维数组中的某一行或列进行排序
data = np.array([[1,2,3],
                 [2,2,1],
                 [23,1,6]])
data = data[data[:,2].argsort()] #按照第三列进行排序
'''
结果:
array([[ 2,  2,  1],
       [ 1,  2,  3],
       [23,  1,  6]])
'''


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值