python_numpy基础

1. 矩阵的创建

In:

a=np.arange(1,5)
a=np.array([1,2,3,4,5])
print a, a.dtype, a.shape, a.size, a.ndim

Out:

[1 2 3 4]

np.arange类似range函数
np.array用来生成矩阵
dtype是数据类型,有int64, complex, uint16等
shape是个元组属性,表示每一维的宽度
size是所有元素个数
ndim是维数

linspace创建
In:

# linspace返回0,1之间的5个数据
x=np.linspace(0,1,5)

Out:

array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ])
2.铺平一个矩阵

In:

b=np.array([1,2,3],dtype='float16') # int64, complex, uint16......
#注意[]的使用
m=np.array([np.arange(6),np.arange(6)])
n=np.array([[1,2,3,4],[5,6,7,8]])
#展平一个矩阵
x=m.ravel()#x为[0 1 2 3 4 5 0 1 2 3 4 5]
y=n.flatten()#y为[1 2 3 4 5 6 7 8]

注解:
ravel()和flatten()看起来效果一样,都是把矩阵展平了。它们的区别在于
ravel()返回的是原有数据的一个映射(view),没有分配新的存储,改变它的值原有数据会变
flatten()返回的是新的数据,改变它的值原有数据不会变

3.改变矩阵的shape/size(直接在当前数据上修改,返回空)

In:

#
n=[[0 1 2 3 4 5]
 [0 1 2 3 4 5]]
# reshape返回一个view
x=n.reshape(3,4)
#
x=[[0 1 2 3]
     [4 5 0 1]
     [2 3 4 5]]
n不变
# resize直接在当前数据上更改,返回空
y=n.resize(3,4)
#y为none,
n=[[0 1 2 3]
     [4 5 0 1]
     [2 3 4 5]]

注:
当改变一个x的值时,比如x[2]=10,n的值会随之改变。
如果想要它不变, copy()可以强制返回一个新的数据
x=m.reshape(3,4).copy()

4.随机排一维

In:

a = np.arange(10)#a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
np.random.shuffle(a)  # 随机排第一维

Out

a=[2 3 6 7 0 4 9 5 1 8]

In

a = np.arange(9).reshape((3, 3)) 
np.random.shuffle(a)

Out

[[6, 7, 8],
 [0, 1, 2],
 [3, 4, 5]]
5.生成全1、全0、对角矩阵
# 全0矩阵
a=np.zeros((3,3))
# 全1矩阵
b=np.ones((5,4))
# 单位矩阵
c=np.eye(3)
# 取对角元素
np.diag(b)
6.矩阵的加法
a = np.arange(9).reshape((3, 3))

## 每个元素的broadcast
print a
print a+3

## 行broadcast
print a+np.arange(3)

## 列broadcast
print a+np.arange(3).reshape(3,1)

注:
nm + 11 就是将11的元素作用在nm的整个矩阵
nm + n1 就是将n1的元素作用在nm的每一列
nm + 1m 就是将1m的元素作用在nm的每一行
(乘法类似)

7.矩阵的转置
print m.transpose()
print m.T
8.矩阵的乘法
a = np.arange(4).reshape((2, 2))#a=[[0, 1],[2, 3]]
b = np.linspace(1,2,2)#b=[1,2]

# 两种矩阵乘法形式
print a.dot(b)
print np.dot(a,b)
#输出[2,8]
## 每个元素broadcast
print a*2
# 行broadcast
print a*[1,2]
#a为[[0, 1],[2, 3]],输出[[0, 2], [2, 6]]
# 列broadcast
 a*[[1],[2]]
#a为[[0, 1],[2, 3]],输出[[0, 1], [4, 6]])
9.矩阵的拼接

hstack

##a为[[0, 1],[2, 3]],b=[[0, 2], [4, 6]]
c=np.hstack((a,b))#horizontal
#c=[[0, 1, 0, 2], [2, 3, 4, 6]]
c=np.vstack((a, b))#vertical
#c=[[0, 1], [2, 3], [0, 2], [4, 6]]

concatenate

d=np.concatenate((a, b), axis=1)
#d=[[0, 1, 0, 2],[2, 3, 4, 6]]
d=np.concatenate((a, b), axis=0)
#d=[[0, 1], [2, 3], [0, 2], [4, 6]]

#a为[[0, 1],[2, 3]]
print np.hsplit(a, 2)#[array([[0],[2]]), array([[1], [3]])]
print np.vsplit(a,2)#[array([[0, 1]]), array([[2, 3]])]
10.矩阵的查找

In:

a = np.arange(12).reshape((3, 4))
b = a%2==0#布尔类型
c = a>4#布尔类型
print b
print c

Out:

a=[[ 0,  1,  2,  3],
 [ 4,  5,  6,  7],
 [ 8,  9, 10, 11]]
b=([[ True, False,  True, False],
  [ True, False,  True, False],
  [ True, False,  True, False]], dtype=bool)
c=([[False, False, False, False],
  [False,  True,  True,  True],
  [ True,  True,  True,  True]], dtype=bool)
#a=[[ 0,  1,  2,  3],
 [ 4,  5,  6,  7],
 [ 8,  9, 10, 11]]
print np.argmax(a)#11

# 其实是列broadcast,返回每列最大值的index
print np.argmax(a, axis=0)
#array([2, 2, 2, 2]),共4列,每列第三个元素最大

# 行broadcast,返回每行最大值的index
print np.argmax(a, axis=1)
#array([3, 3, 3]),共3行,每行第4个元素最大
# np.where支持多个逻辑组合, 得到满足条件的index
idx=np.where((a>3))
print a[idx]

idx=np.where((a>3)&(a<7))
#idx=(array([1, 1, 1, 1, 2, 2, 2, 2]), array([0, 1, 2, 3, 0, 1, 2, 3]))
#第一个array是行,第二个array是列
print a[idx]
#[ 4  5  6  7  8  9 10 11]
idx=np.where((a>3)&(a<7))
print a[idx]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容