博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
numpy 维度与轴的问题
阅读量:4353 次
发布时间:2019-06-07

本文共 1448 字,大约阅读时间需要 4 分钟。

0. 多维数组的显示问题

>> X = np.reshape(np.arange(24), (2, 3, 4))    # 也即 2 行 3 列的 4 个平面(plane)>> Xarray([[[ 0,  1,  2,  3],        [ 4,  5,  6,  7],        [ 8,  9, 10, 11]],       [[12, 13, 14, 15],        [16, 17, 18, 19],        [20, 21, 22, 23]]])

再来分别看每一个平面的构成:

>> X[:, :, 0]array([[ 0,  4,  8],       [12, 16, 20]])>> X[:, :, 1]array([[ 1,  5,  9],       [13, 17, 21]])>> X[:, :, 2]array([[ 2,  6, 10],       [14, 18, 22]])>> X[:, :, 3]array([[ 3,  7, 11],       [15, 19, 23]])

也即在对 np.arange(24)(0, 1, 2, 3, ..., 23) 进行重新的排列时,在多维数组的多个轴的方向上,先分配最后一个轴(对于二维数组,即先分配行的方向,对于三维数组即先分配平面的方向)

1. None 索引 ⇒ 升维

>> A = np.random.rand(2, 3)>> A.shape(2L, 3L)>> A[None, :].shape(1L, 2L, 3L)>> A[None, :, :].shape(1L, 2L, 3L)

2. np.apply_along_axis

这是一个强大的函数,在指定轴上,按指定的函数进行操作;

>>> b = np.array([[1,2,3], [4,5,6], [7,8,9]])>>> np.apply_along_axis(np.diff,0,b)                            # 在列方向进行差分的动作array([[3, 3, 3],       [3, 3, 3]])>>> np.apply_along_axis(np.diff,1,b)array([[1, 1],       [1, 1],       [1, 1]])>>> b = np.array([[8,1,7], [4,3,9], [5,2,6]])>>> np.apply_along_axis(sorted, 1, b)array([[1, 7, 8],       [3, 4, 9],       [2, 5, 6]])

这个函数真正的意义在于什么,除了更精细化,customized的处理行和列外,它对一些不具备axis参数的函数,使其具备逐行或者逐列处理的能力 np.bincount(),而不必逐行逐列地进行遍历。

P = np.asarray([clf.predict(X) for clf in self.classifiers_])maj_vote = np.apply_along_axis(lambda col: np.argmax(np.bincount(col, weights=self.weights)), axis=0, arr=P)

转载于:https://www.cnblogs.com/mtcnn/p/9422417.html

你可能感兴趣的文章
js-新闻无缝滚动
查看>>
Python在自动化运维时最常用的50个方法(转)
查看>>
Java 学习之路 之 泛型方法
查看>>
Test
查看>>
C# 整理
查看>>
jQuery的效果函数
查看>>
AngularJS中使用$resource
查看>>
[poj3261]Milk Patterns(后缀数组)
查看>>
[luogu3369]普通平衡树(fhq-treap模板)
查看>>
题解 P2799 【国王的魔镜】
查看>>
写写代码,注意注意细节
查看>>
css Backgroud-clip (文字颜色渐变)
查看>>
基于jquery 的观察者模式
查看>>
安装 OpenSSL 工具
查看>>
ccf 火车购票
查看>>
apply,call,bind,symbol的用法
查看>>
CI框架视图与控制器
查看>>
没有框架想用D方法和C方法怎么办?
查看>>
软工实践第一次作业
查看>>
vim产生的备份文件和临时文件
查看>>