2021-02-27 numpy

import numpy as np
np.random.seed(0) # 设置随机数种子
np_array = np.random.randint(10, size=(3, 4, 5), dtype='int') # 三维数组

np_array .ndim
np_array .shape
np_array .size

np_array [start:stop:step]
np_array .copy
import copy
copy.deepcopy(np_array)

np.arange(1, 10).reshape((3, 3))
np_array [np.newaxis, :]  # 获得行向量或列向量

x = np.array([1, 2, 3])
y = np.array([3, 2, 1])
np.concatenate([x, y])
np.concatenate([x, y], axis=1)
# 垂直栈数组
np.vstack([x, y])
# 水平栈数组
np.hstack([x, y])

与之类似, np.dstack 将沿着第三个维度拼接数组
分裂可以通过 np.split、 np.hsplit 和 np.vsplit 函数来实现

x = [1, 2, 3, 99, 99, 3, 2, 1]
x1, x2, x3 = np.split(x, [3, 5])
print(x1, x2, x3)

grid = np.arange(16).reshape((4, 4))
upper, lower = np.vsplit(grid, [2])

numpy数组计算

x // 2  # 整除
x % 2 # 取余

// np.floor_divide 地板除法运算(floor division,即 3 // 2 = 1)
** np.power 指数运算(即 2 ** 3 = 8)
% np.mod 模 / 余数(即 9 % 4 = 1)

x = [1, 2, 3]
print("x =", x)
print("e^x =", np.exp(x))
print("2^x =", np.exp2(x))
print("3^x =", np.power(3, x))

x = [1, 2, 4, 10]
print("x =", x)
print("ln(x) =", np.log(x))
print("log2(x) =", np.log2(x))
print("log10(x) =", np.log10(x))
y = np.zeros(10)
np.power(2, x, out=y[::2])
print(y)

如果这里写的是 y[::2] = 2 ** x,那么结果将是创建一个临时数组,该数组存放的是2 ** x 的结果,并且接下来会将这些值复制到 y 数组中。对于上述例子中比较小的计算量来说,这两种方式的差别并不大。但是对于较大的数组,通过慎重使用 out 参数将能够有效节约内存。

np.sum、 np.prod、 np.cumsum、np.cumprod 
x = np.arange(1, 6)
np.add.reduce(x) # 重复计算,不保留中间结果
np.add.accumulate(x) #重复计算,并保留中间结果
np.multiply.outer(x, x) # 外积

M.min(axis=0)
M.max(axis=1)
image.png

image.png
如果需要统计布尔数组中 True 记录的个数,可以使用 np.count_nonzero 函数
# 有没有值大于8?
np.any(x > 8)
# 是否所有值都小于10?
np.all(x < 10)

Python 的逐位逻辑
运算符(bitwise logic operator) &、 |、 ^ 和 ~ 来实现。

image.png

and 和 or 判断整个对象是真或假,而 & 和 | 是指每个对象中的比特位。

x = np.zeros(10)
i = [2, 3, 3, 4, 4, 4]
x[i] += 1

x = np.zeros(10)
np.add.at(x, i, 1)

NumPy中的快速排序: np.sort和np.argsort

对X的每一列排序

np.sort(X, axis=0)

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

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

推荐阅读更多精彩内容

  • 大师兄的Python机器学习笔记:统计学基础之底层代码实现(二)大师兄的Python机器学习笔记:Numpy库、S...
    superkmi阅读 917评论 0 7
  • 0. 前言 大约七八年前,我曾经用 pyOpenGL 画过地球磁层顶的三维模型,这段代码至今仍然还运行在某科研机构...
    鹤子青云上阅读 537评论 0 0
  • NumPy(Numerical Python 的简称)提供了高效存储和操作密集数据缓存的接口,可以理解是一个数组,...
    奉先阅读 749评论 0 0
  • NumPy NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python...
    Recalcitrant阅读 672评论 0 1
  • To be continue NumPy(Numerical Python) 是 Python 语言的一个扩展程序...
    z761943阅读 1,636评论 1 7