numpy

生成随机数

随机数种子
np.random.seed(42)
设置显示小数点后两位
np.set_printoptions(precision=2)
产生元素为0到1,大小为4*3的随机数据矩阵
np.random.rand(4,3)
元素由标准正态分布产生,大小为4*3的随机数矩阵
np.random.randn(4,3)
元素为0到9的随机整数,大小为4*3的随机数矩阵
np.random.randint(0,10,(4,3))
元素由期望值为100,标准差为10的正态分布产生,大小为4*3的随机数矩阵
np.random.normal(100,10,(4,3))
元素由起始为10,终止为20的均匀分布产生,大小为4*3的随机数矩阵
np.random.uniform(10,20,(4,3))
元素由lambda为2的泊松分布产生,大小为4*3的随机数矩阵
np.random.poisson(2.0,(4,3))
随机打乱数组
np.random.permutation(10)
array([0, 7, 1, 3, 4, 2, 9, 5, 6, 8])
shuffle
permutation产生新数组,shuffle则打乱原始数组
np.random.shuffle(a)
重采样
np.random.choice([1, 2, 3],size=(4,3))
指定概率
np.random.choice(a,size=(4,3),p=a/np.sum(a))

矩阵点乘

元素乘法:np.multiply(a,b)
矩阵乘法:np.dot(a,b) 或 np.matmul(a,b) 或 a.dot(b) 或直接用 a @ b !
唯独注意:*,在 np.array 中重载为元素乘法,在 np.matrix 中重载为矩阵乘法!

在numpy和tensorflow中都是
y = w * x **


image.png

矩阵乘法

tf.matmul(w, x)
np.dot(w,x)


image.png

转化为ndarray :np.asarray、np.array

array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会。

生成等差数列

linspace()通过指定开始值、终值(包含终值)和元素个数创建表示等差数列的一维数组,

arange()通过指定开始值、终值(不包含终值)和步长创建表示等差数列的一维数组

沿着给定的(axis=0 by default)axis加入一系列数组

np.concatenate((a1,a2,...), axis=0, out=None)

axis=0\1\2
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
np.concatenate((a, b), axis=0)

> array([[1, 2],
       [3, 4],
       [5, 6]])

np.concatenate((a, b.T), axis=1)

> array([[1, 2, 5], 
         [3, 4, 6]])

np.concatenate((a, b), axis=None)

> array([1, 2, 3, 4, 5, 6])

沿垂直方向堆叠数组:np.vstack()

a = np.array([1, 2, 3]) # (1,3)
b = np.array([4, 5, 6])
np.vstack((a, b))

> array([[1, 2, 3],
         [4, 5, 6]])

a = np.array([[1], [2], [3]]) # (3,1)
b = np.array([[2], [3], [4]])
np.vstack((a,b))

> array([[1],
         [2],
         [3],
         [2],
         [3],
         [4]])

沿水平方向堆叠数组:np.hstack()

a = np.array((1,2,3))
b = np.array((2,3,4))
np.hstack((a,b))

> array([1, 2, 3, 2, 3, 4])

a = np.array([[1],[2],[3]])
b = np.array([[2],[3],[4]])
np.hstack((a,b))

> array([[1, 2],
         [2, 3],
         [3, 4]])

多维数组降为一维:np.ravel()、np.flatten()

np.flatten()返回一份拷贝,对拷贝所做修改不会影响原始矩阵,而np.ravel()返回的是视图,修改时会影响原始矩阵

增加一个一维 np.newaxis

            x1 = np.array([1, 2, 3, 4, 5])
            the shape of x1 is (5,)
            x1_new = x1[:, np.newaxis]
            now, the shape of x1_new is (5, 1)

插入ndarray元素np.append、 np.insert

x = np.array([1, 2, 3, 4, 5])
Y = np.array([[1,2,3],[4,5,6]])


x = np.append(x, [7,8]) # 秩为1的ndarray,也可通过列表一次添加多个
> x = [1 2 3 4 5 6 7 8]


v = np.append(Y, [[7,8,9]], axis=0) # 秩为2的ndarray,添加一行
q = np.append(Y,[[9],[10]], axis=1) # 秩为2的ndarray,添加一列; 当然也可添加两列 q = np.append(Y,[[9,99],[10,100]], axis=1)
>v =
 [[1 2 3]
  [4 5 6]
  [7 8 9]]
 
> q =
 [[ 1 2 3 9]
  [ 4 5 6 10]]

x = np.array([1, 2, 5, 6, 7])
Y = np.array([[1,2,3],[7,8,9]])

x = np.insert(x,2,[3,4]) # 向秩为1的ndarray第三个元素前插入3和4
>x = [1 2 3 4 5 6 7]

w = np.insert(Y,1,[4,5,6],axis=0) # 向秩为2的ndarray第二行前,插入4,5,6
v = np.insert(Y,1,5, axis=1) # 向秩为2的ndarray前第二列前,插入5

>w =
[[1 2 3]
 [4 5 6]
 [7 8 9]]

>v =
[[1 5 2 3]
 [7 5 8 9]]

删除ndarray元素np.delete

x = np.array([1, 2, 3, 4, 5])
Y = np.array([[1,2,3],[4,5,6],[7,8,9]])

x = np.delete(x, [0,4]) # 此处删除第一个和第五个(最后一个)元素
> x = [2 3 4]

w = np.delete(Y, 0, axis=0) # 此处删除第一行的元素
v = np.delete(Y, [0,2], axis=1) # 此处删除第一列和第三列(最后一列)的元素
>w =
[[4 5 6]
 [7 8 9]]

>v =
[[2]
 [5]
 [8]]

矩阵比较

all()操作就是对两个矩阵的比对结果再做一次与运算,而any则是做一次或运算


mgrid

a:b:cj

a=np.mgrid[-4:4:3j]
在[-4,4]区间内取3个值
a=np.mgrid[-4:4:3]
间隔为3取值

x, y = np.mgrid[1:3:3j, 4:5:2j]
x=array([[1., 1.],
       [2., 2.],
       [3., 3.]])

y=array([[4., 5.],
       [4., 5.],
       [4., 5.]])

meshgrid:网格

1、主要使用的函数为[X,Y]=meshgrid(xgv,ygv);
meshgrid函数生成的X,Y是大小相等的矩阵,xgv,ygv是两个网格矢量,xgv,ygv都是行向量。
X:通过将xgv复制length(ygv)行(严格意义上是length(ygv)-1行)得到
Y:首先对ygv进行转置得到ygv',将ygv'复制(length(xgv)-1)次得到。

[X,Y] = meshgrid(1:3,10:14)
X =     1     2     3
        1     2     3
        1     2     3
        1     2     3
        1     2     3
Y =    10    10    10
       11    11    11
       12    12    12
       13    13    13
       14    14    14
[X,Y]=meshgrid(1:3)
X =      1     2     3
         1     2     3
         1     2     3
 Y =     1     1     1
         2     2     2
         3     3     3
x = np.linspace(-1, 1, 2)
y = np.linspace(-1, 1, 2)
print(x, y)  # [-1.  1.]
x = np.meshgrid(x, y)  # (20, 20) (20, 20)
print(x)
# [[-1.  1.]
# [-1.  1.]]
#
# [[-1. -1.]
# [ 1.  1.]]

条件语句

np.where(condition, [x, y])

这里三个参数,其中必写参数是condition(判断条件),后边的x和y是可选参数.那么这三个参数都有怎样的要求呢?

condition:array_like,bool ,当为True时,产生x,否则产生y


numpy.piecewise(x, condlist, funclist, *args, **kw)

参数一 x:表示要进行操作的对象
参数二:condlist,表示要满足的条件列表,可以是多个条件构成的列表
参数三:funclist,执行的操作列表,参数二与参数三是对应的,当参数二为true的时候,则执行相对应的操作函数。

返回值:返回一个array对象,和原始操作对象x具有完全相同的维度和形状

np.piecewise(t,[t<1,t<0.8,t<0.3],
                    [lambda t : np.sin(2*np.pi *f1*t),
                     lambda t : np.sin(2 * np.pi * f2 * t),
                     lambda t : np.sin(2 * np.pi * f3 * t)])

argsort

x = np.array([3, 1, 2])
np.argsort(x)

array([1, 2, 0])

x = np.array([[0, 3], 
            [2, 2]])

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