numpy 学习

numpy.1

import numpy as np
a = np.arange(4)
print(a)
#生成的是一个从0开始的4个值的数列
#[0 1 2 3]
a = np.arange(4).reshape((2,2))
print(a)
print(a.shape)
#判断矩阵的样式(2, 2)代表2行2列
#生成一个2行2列的矩阵
#[[0 1]
# [2 3]]
a = np.arange(4).reshape((2,2))
print(a)
print(np.sum(a,axis = 0))#axis = 0 代表按列相加 axis=1代表按行 
'''[[0 1]
 [2 3]]'''
#[2 4] 返回一个array
print(np.max(a))#找到其中最大的值
print(np.min(a))#找到最小的值
print(np.max(a,axis = 0))#按列找出每一列的最大值
print(np.min(a,axis = 0))#同上
b = np.arange(12).reshape((3,4))
print(b)
print(np.argmax(b,axis = 1))#[3 3 3] 按照行将每一行的最大的值的位置返回一个数列
print(b.mean())#算出所有值的 平均值
print(np.cumsum(b))
#[ 0  1  3  6 10 15 21 28 36 45 55 66]
#将每一个值递加 并返回
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
'''
d = np.random.random((2,3)) * 10 - 3
#可以看到随机生成的一个2行3列的矩阵并且对矩阵的运算是对每一个元素的计算
print(d)
print(d.shape)#(2, 3)
print(np.transpose(d)#对矩阵的转置 transpose
print(d.T)#对矩阵的转置
'''
[[ 3.79442884  2.65870034  2.96206461]
 [-1.91460778  1.11432605  2.06610598]]
'''
'''
[[-0.27988317 -2.06762975 -1.91392339]
 [-1.44516069 -1.55149608  6.53402984]]
(2, 3)
[[-0.27988317 -1.44516069]
 [-2.06762975 -1.55149608]
 [-1.91392339  6.53402984]]
'''

d = np.arange(12).reshape((3,4))
a = np.arange(4).reshape((4,1))
print(d)
print(a)
print(d.dot(a))#矩阵的乘法d 在前
print(np.mean(d,axis = 0))
print(np.mean(d,axis = 1))
#[ 4.  5.  6.  7.]按照列来求平均值返回4列的平均值
#[ 1.5  5.5  9.5]按照行来求返回3行
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

[[0]
 [1]
 [2]
 [3]]

[[14]
 [38]
 [62]]
'''


A = np.arange(4,14).reshape(2,5)
print(A)
print(A[1])#按行来取出数据
print(A[1,1:3])#取出矩阵中的更加具体的一些值
print(A[0:,1:3])#从矩阵中取出矩阵
'''
[[ 5  6]
  [10 11]]
'''
print(A.flatten())
'''
[[ 4  5  6  7  8]
   [ 9 10 11 12 13]]'''
[ 9 10 11 12 13]
[10 11]
[ 4  5  6  7  8  9 10 11 12 13]

numpy.2

增加维度

正常来说a如果单纯为一个list的话[ ]*3 代表‘复制’如下面的d所示
所以利用np.array 变成数列可以进行运算
但是还是不够,需要变成向量(矩阵)
list => array => matrix(vector)

a = np.array([1,1,1])
b = a*3
c = [1,1,1]
d = c * 3
print(b)#[3 3 3]
print(d) #  [1, 1, 1, 1, 1, 1, 1, 1, 1]

a 变成 array 之后 利用[np.newaxis,:] 变成一个一行一列的向量
[np.newaxis,:] 表示的意思是:在行上增加一个纬度,列上选择所有列
[np.newaxis,0:1]:则是意思选出一列从0到1不包括1 在行增加一个维度
[0:2,np.newaxis] :按行取取出的一行中的每一个元素 ,增加一个维度

a = np.array([1,2,3])[np.newaxis,0:1]
print(a) #   [[1]]
b = np.array([1,2,3])[0:2,np.newaxis]
'''
[[1]
 [2]]
'''
a = np.array([1,2,3])[np.newaxis,:]#array => vector
#[[1,2,3]] 
print(a.T)
c = np.array([4,5,6])[np.newaxis,:]
d = np.array([11,11,11])
print(d)
print(a)
'''
[[1]
 [2]
 [3]]
[11 11 11]
[[1 2 3]]
'''

矩阵的组合

三行一列的矩阵a 和 c
分别按照行 axis = 1 (行) 和 axis = 0 (列) 组合
按行组合就是直接加到右侧(要求相同的行数)
按列就是直接加到下侧(要求相同的列数)

a = np.array([1,2,3]).reshape((3,1))
print(a)
c = np.array([4,5,6]).reshape((3,1))
print(c)
print(np.concatenate((a,c),axis = 1))
print(np.concatenate((a,c),axis = 0)

'''
#(3,2)shape
[[1 4]
 [2 5]
 [3 6]]
#(6,1)shape
[[1] [2] [3] [4] [5] [6]]
'''

hstack 代表的是 concatenate 的axis = 1(行合并)
vstack 代表的是 concatenate 的axis = 0(列合并)

d = np.hstack((a,c))
print(d)
e = np.vstack((a,c))
print(e)

还可以实现多个 矩阵的组合

a = np.array([1,2,3]).reshape((3,1))
c = np.array([4,5,6]).reshape((3,1))
d = np.hstack((a,c))
e = np.hstack((a,c,d))#(a,c,d) this tuple can have many matrix!
print(e)

矩阵的分割

np.split(a,3,axis = 0)三个参数
a: 要被分割的矩阵
3:分割的份数必须是在被分割维度上可以整除
axis = 1(被保留的是行数【分割后行数不变】,就是说按列分割)
axis = 0(被保留的是列数【分割后列数不变】,就是说按行分割)

a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,3,axis = 0))

'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
'''
#[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
#注意返回值是一个一个的array里面包含着matrix

另外一种分割方式
hsplit : 和axis = 1的情况一样 都是保留行数的分割方式
同理 还有vsplit

a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,2,axis = 1))
print(np.hsplit(a,2)

copy

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

推荐阅读更多精彩内容