从索引数组和一组数组中构造一个数组以供选择。

首先,如果感到困惑或不确定,请务必看一下示例-完全具有通用性,此函数不如下面的代码描述所示简单(在ndi =numpy.lib.index_tricks):

np.choose(a,c) == np.array([c[a[I]][I] for I in ndi.ndindex(a.shape)])。

但这省略了一些微妙之处。这是一个完全概括的摘要:

给定一个整数的“index”数组(a)和n个数组(选择项)的序列,根据需要首先将a和每个选择数组广播到具有共同形状的数组;称这些Ba和Bchoices [i],i = 0,…,n-1,我们必然Ba.shape == Bchoices[i].shape每个i。然后,一个新的形状Ba.shape创建如下:

如果mode=raise(默认值),那么,首先,a(以及Ba)的每个元素都必须在[0,n-1]范围内;现在,假设i(在该范围内)是Ba中(j0,j1,…,jm)位置处的值-那么新数组中相同位置处的值就是Bchoices [i]中相同位置处的值位置;

如果mode=wrap,(因此,Ba)中的值可以是任何(有符号)整数;模算术用于将[0,n-1]范围以外的整数映射回该范围;然后按照上面的方法构造新数组;

如果mode=clip,(因此,Ba)中的值可以是任何(有符号)整数;负整数映射到0;大于n-1的值映射到n-1;然后按上述方法构造新数组。

参数:a: : int array

该数组必须包含[0,n-1]中的整数,其中n是选择的数目,除非mode=wrap或者mode=clip,在这种情况下,任何整数都是允许的。

choices: : sequence of arrays

选择数组。和所有选择必须广播为相同的形状。如果choices本身是一个数组(不建议使用),则其最外面的维度(即对应于choices.shape[0])被视为定义了“sequence”。

out: : array, 可选参数

如果提供,结果将被插入此数组。它应该具有适当的形状和dtype。请注意,如果mode ='raise',则out总是被缓冲;使用其他模式以获得更好的性能。

mode: : {‘raise’ (default), ‘wrap’, ‘clip’}, 可选参数

指定将如何处理[0,n-1]以外的索引:

‘raise’:an exception is raised

‘wrap’:value becomes value mod n

‘clip’:values < 0 are mapped to 0, values > n-1 are mapped to n-1

返回值:merged_array: : 数组

合并结果。

异常:ValueError:shape mismatch:

如果和每个选择数组都不能全部广播为相同形状。

注意:

为了减少误解的机会,即使名义上支持以下“abuse”,也不应将选择视为单个数组,也不应将其视为单个数组,即最外面的sequence-like容器应该是列表或元组。

例子:

>>> choices = [[0, 1, 2, 3], [10, 11, 12, 13],

... [20, 21, 22, 23], [30, 31, 32, 33]]

>>> np.choose([2, 3, 1, 0], choices

... # the first element of the result will be the first element of the

... # third (2+1) "array" in choices, namely, 20; the second element

... # will be the second element of the fourth (3+1) choice array, i.e.,

... # 31, etc.

... )

array([20, 31, 12, 3])

>>> np.choose([2, 4, 1, 0], choices, mode='clip') # 4 goes to 3 (4-1)

array([20, 31, 12, 3])

>>> # because there are 4 choice arrays

>>> np.choose([2, 4, 1, 0], choices, mode='wrap') # 4 goes to (4 mod 4)

array([20, 1, 12, 3])

>>> # i.e., 0

几个示例说明了如何选择广播:

>>> a = [[1, 0, 1], [0, 1, 0], [1, 0, 1]]

>>> choices = [-10, 10]

>>> np.choose(a, choices)

array([[ 10, -10, 10],

[-10, 10, -10],

[ 10, -10, 10]])

>>> # With thanks to Anne Archibald

>>> a = np.array([0, 1]).reshape((2,1,1))

>>> c1 = np.array([1, 2, 3]).reshape((1,3,1))

>>> c2 = np.array([-1, -2, -3, -4, -5]).reshape((1,1,5))

>>> np.choose(a, (c1, c2)) # result is 2x3x5, res[0,:,:]=c1, res[1,:,:]=c2

array([[[ 1, 1, 1, 1, 1],

[ 2, 2, 2, 2, 2],

[ 3, 3, 3, 3, 3]],

[[-1, -2, -3, -4, -5],

[-1, -2, -3, -4, -5],

[-1, -2, -3, -4, -5]]])

python choice用法_python numpy choose用法及代码示例相关推荐

  1. python画羊_python编程羊车门问题代码示例

    问题: 有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么.参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择. ...

  2. python代码画图案-python如何绘制iPhone手机图案?(代码示例)

    本篇文章给大家带来的内容是介绍python如何绘制iPhone手机图案?(代码示例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 虽然我用不起苹果手机,但我可以用python画出 ...

  3. python代码大全和用法用量_Python numpy.stack()用法及代码示例

    numpy.stack()函数用于沿新轴连接相同尺寸数组的序列.axis参数指定结果轴尺寸中新轴的索引.例如,如果axis = 0,它将是第一个尺寸:如果axis = -1,它将是最后的尺寸. 用法: ...

  4. python中squeeze函数_Python numpy.squeeze()用法及代码示例

    当我们要从数组形状中删除一维条目时,将使用numpy.squeeze()函数. 用法: numpy.squeeze(arr, axis=None ) 参数: arr :[数组]输入数组. axis : ...

  5. python中all的用法_python中all用法

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 开发准备cas 的 python sdk 包含了用于访问和操作 cas 的所有 ...

  6. python中len的用法_Python len函数用法

    1 在Python中,要知道一个字符串有多少个字符(以获得字符串的长度),或者一个字符串需要多少字节,可以使用len函数.len函数的基本语法格式如下: 2 其中string用于指定要计算长度的字符串 ...

  7. python npv 计算公式_Python numpy 中常用的数据运算

    Numpy 精通面向数组编程和思维方式是成为Python科学计算大牛的一大关键步骤.--<利用Python进行数据分析> Numpy(Numerical Python)是Python科学计 ...

  8. python fmod函数_Python numpy.fmod方法代码示例

    本文整理汇总了Python中numpy.fmod方法的典型用法代码示例.如果您正苦于以下问题:Python numpy.fmod方法的具体用法?Python numpy.fmod怎么用?Python ...

  9. Java choose函数_Python numpy.choose函数方法的使用

    numpy.choose numpy.choose(a, choices, out=None, mode='raise') [source] 从索引数组和一组数组中构造一个数组以供选择. 首先,如果感 ...

最新文章

  1. 用Python和项目进行机器学习(初学者) Machine Learning A-Z with Python with Project (Beginner)
  2. DFA确定性有穷自动机及其化简
  3. 撩课-Web大前端每天5道面试题-Day12
  4. select fd_set
  5. FI_ITEMS_MASS_CHANGE 批量更新 凭证文本 (凭证被锁、一些项目没更改到的解决方法)
  6. Mac版Anaconda安装Tweepy包
  7. 神清气爽,小妹妹,先给她示范了一遍红色警戒
  8. strcat在某种特定条件下的优化
  9. 行车路途出现意外6个急救绝招
  10. c语言实验--九九乘法表,C语言实验报告(四)
  11. 牛客网Python笔试技巧、单行多行输入方法以及代码调试技巧
  12. MIME类型完整列表
  13. 免费c++图片操作库(类)
  14. Apache启动失败,请检查相关配置。√MySQL5.1已启动。
  15. 读论文,第十三天:DualRing: Enabling Subtle and Expressive Hand Interaction with Dual IMU Rings
  16. English:英语学习口诀(实用)
  17. 判断字符串是否是数字
  18. LVTTL转LVDS GM8285C,28位LVDS发送器,替代GM8283
  19. 速联2.0 实现SCADA软件远程无线监控环保设备
  20. 新字体引用本地运行可以获得,放到服务器上报404

热门文章

  1. MP4文件播放不了是什么原因?原因及解决办法分享!
  2. Java中main函数调用同类中的方法
  3. Word2003Xml格式摸索 1
  4. google网站流量统计
  5. 动态select可搜索的下拉框,重置chosen
  6. 这里北京这家高端画室超高录取率,原来是这样培训学生的
  7. linux-命令-procps-ng工具-top
  8. 【TcaplusDB】大暑至,万物荣华
  9. 深入学习SpringCloud之SpringCloud简介
  10. 机器学习和数据科学的最佳公共数据集机器学习、数据科学、情感分析、计算机视觉、自然语言处理 (NLP)、临床数据等的最佳公共数据集。