python numpy花哨索引

1 import numpy as np
2 rand = np.random.RandomState(42)
3
4 x = rand.randint(100, size=10)
5 print(x)
[51, 92, 14, 71, 60, 20, 82, 86, 74, 74]

获取元素:

[x[3], x[7], x[2]]
[71, 86, 14]
#  通过传递索引的单个列表或数组来获取元素ind = [3, 7, 4]
x[ind]
array([71, 60, 86])

利用花哨的索引,结果的形状与索引数组的形状一致,而不是 与被索引数组的形状一致:

ind = np.array([[3, 7], [4, 5]])
x[ind]
array([[71, 86],
       [60, 20]])

花哨的索引对多个维度也适用。

花哨的索引返回的值反映的是广播后的索引数组的形状,而不是被索引数组的形状。

In [12]: X = np.arange(12).reshape((3, 4))

In [13]: X
Out[13]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [14]: row = np.array([0, 1, 2])

In [15]: col = np.array([2, 1, 3])

In [16]: X[row, col]
Out[16]: array([ 2,  5, 11]) #  第一个值是X[0, 2], 第二个值是X[1, 1]

In [17]: X[row[:, np.newaxis], col]
Out[17]:
array([[ 2,  1,  3],
       [ 6,  5,  7],
       [10,  9, 11]])

In [18]: row[:, np.newaxis] * col
Out[18]:
array([[0, 0, 0],
       [2, 1, 3],
       [4, 2, 6]])

In [19]: row * col
Out[19]: array([0, 1, 6])

In [20]: X[np.array([0, 1, 2]), np.array([2, 1, 3])]
Out[20]: array([ 2,  5, 11])

In [22]: X[np.array([0, 1, 2])[:, np.newaxis], np.array([2, 1, 3])]
Out[22]:
array([[ 2,  1,  3],
       [ 6,  5,  7],
       [10,  9, 11]])

In [23]: np.array([0, 1, 2])[:, np.newaxis]
Out[23]:
array([[0],
       [1],
       [2]])

原文地址:https://www.cnblogs.com/coodyz/p/10970069.html

时间: 2024-09-29 20:18:18

python numpy花哨索引的相关文章

python numpy教程

python numpy教程 2014-08-10 22:21:56 分类: Python/Ruby 先决条件 在阅读这个教程之前,你多少需要知道点python.如果你想重新回忆下,请看看Python Tutorial. 如果你想要运行教程中的示例,你至少需要在你的电脑上安装了以下一些软件: Python NumPy 这些是可能对你有帮助的: ipython是一个净强化的交互Python Shell,对探索NumPy的特性非常方便. matplotlib将允许你绘图 Scipy在NumPy的基础

python numpy 的运算

一,基本运算 >>> a = array([1,2,3,4])>>> aarray([1, 2, 3, 4])>>> b=arange(4)>>> barray([0, 1, 2, 3])>>> a + barray([1, 3, 5, 7])>>> a - barray([1, 1, 1, 1])>>> a *barray([ 0, 2, 6, 12])>>>

Python+numpy(3).md

Python numpy 1.1Python科学计算的介绍 参考资料: http://old.sebug.net/paper/books/scipydoc/numpy_intro.html http://www.numpy.org/ numpy是一个与数学模型构建.定量分析方法以及利用计算机分析和解决科学问题相关领域. 常用库: Numpy Scipy Pandas matplotlib 1.2 Numpy之ndarray对象 标准安装的Python中用列表(list)保存一组值,可以用来当作数

numpy——高级索引

numpy高级索引: NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引 1 整数索引 除了支持python中list那样索引之外,还支持以下实例获取数组中(0,0),(1,1)和(2,0)位置处的元素 import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] # 指获取索引(0,0),(1,1),(2,

Python numpy数组扩展效率问题

Numpy库的ndarray数组可以方便地进行各种多维数据处理工作 可是它最大的缺点就是不可动态扩展--"NumPy的数组没有这种动态改变大小的功能,numpy.append()函数每次都会重新分配整个数组,并把原来的数组复制到新数组中."(引用自http://blog.chinaunix.net/uid-23100982-id-3164530.html) 场景: 今天用ndarray处理 42000 条数据时,就遇到了数组扩展的效率问题 文件名:train.csv(后附下载) 文件大

Python/Numpy大数据编程经验

Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点. 2. 及时用 del 释放大块内存.Python缺省是在变量范围(variablescope)之外才释放一个变量,哪怕这个变量在后面的代码没有再被用到,所以需要手动释放大的array. 注意所有对数组的引用都del之后,数组才会被del.这些引用包括A[2:]这样的view,即使np.split也只是

Recurrent Neural Networks Tutorial, Part 2 – Implementing a RNN with Python, Numpy and Theano

转载 - Recurrent Neural Networks Tutorial, Part 2 – Implementing a RNN with Python, Numpy and Theano This the second part of the Recurrent Neural Network Tutorial. The first part is here. Code to follow along is on Github. In this part we will implemen

Python Numpy ValueError: data type must provide an itemsize

天朝网络锁国,百度找了半个小时找不出来原因,只能谷歌 谷歌第一条就是,顿时感觉幸福感来的太突然 原因是输入的矩阵均是字符串(从文件里读的) 那么就需要批量转数组,一行一行的转. 下面是我的代码: rownum = 0 f = open(train_Y_path) for line in f.readlines(): train_Y_matrix[rownum] = map(float,line.strip('\n ').split(' ')) rownum += 1 print train_Y_

最实用windows 下python+numpy安装(转载)

最实用windows 下python+numpy安装 如题,今天兜兜转转找了很多网站帖子,一个个环节击破,最后装好费了不少时间. 希望这个帖子能帮助有需要的人,教你一篇帖子搞定python+numpy,节约科研时间. 水平有限,难免存在不足,敬请指正. *******************python安装**************************************************** step1:官网下载安装包: https://www.python.org/ 我下载的