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,0)
print (y)

# [1  4  5]

  同时 切片操作支持多维数组:

import numpy as np

x = np.arange(100).reshape(4,25)
print(x)
print(‘------------------------------‘)
print(x[0:10:2])

  结果:

[[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
  24]
 [25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
  49]
 [50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
  74]
 [75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
  99]]
------------------------------
[[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
  24]
 [50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
  74]]

2  布尔索引

  我们可以通过一个布尔数组来索引目标数组。

  布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组

import numpy as np

x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])
print(x>3)
print(x[x>3])
print(np.where(x>3))

  结果:

  

[[False False False]
 [False  True  True]
 [ True  True  True]
 [ True  True  True]]
[ 4  5  6  7  8  9 10 11]
(array([1, 1, 2, 2, 2, 3, 3, 3], dtype=int64), array([1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))
import numpy as np 

a = np.array([1,  2+6j,  5,  3.5+5j])
print (a[np.iscomplex(a)])

  结果:

  

[2.0+6.j  3.5+5.j]

3  花式索引

  花式索引根据索引数组的值作为目标数组的某个轴的下标来取值

  传入多个索引数组(要使用np.ix_)

import numpy as np 

x=np.arange(32).reshape((8,4))
print (x[np.ix_([1,5,7,2],[0,3,1,2])])
[[ 4  7  5  6]
 [20 23 21 22]
 [28 31 29 30]
 [ 8 11  9 10]]

原文地址:https://www.cnblogs.com/a-runner/p/12248566.html

时间: 2024-07-30 05:16:25

numpy——高级索引的相关文章

numpy广播机制,取特定行、特定列的元素 的高级索引取法

numpy广播机制,取特定行.特定列的元素 的高级索引取法 enter description here enter description here 原文地址:https://www.cnblogs.com/lishikai/p/12361513.html

numpy高级函数:where与extract

numpy高级函数:where与extract 1.numpy.where()函数,此函数返回数组中满足某个条件的元素的索引: import numpy as np x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print("x") print(x) y=np.where(x>5) print(y) print(x[y]) 2.numpy.extract()函数,和where函数有一点相,不过extract函数是返回满足条件的元素

NumPy学习(索引和切片,合并,分割,copy与deep copy)

NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示例 import numpy as np #索引与切片 array=np.arange(3,15) print(array) print(array[3])#数组下标为3的元素 print('\n') print(array[1:3])#取从下标1到下标3,不包括下标3 print(array[

Python的numpy高级应用!

虽然NumPy用户很少会对数组的跨度信息感兴趣,但它们却是构建非复制式数组视图的重要因素.跨度甚至可以是负数,这样会使数组在内存中后向移动,比如在切片obj[::-1]或obj[:,::-1]中就是这样的. 高级数组操作 除花式索引.切片.布尔条件取子集等操作之外,数组的操作方式还有很多.虽然pandas中的高级函数可以处理数据分析工作中的许多重型任务,但有时你还是需要编写一些在现有库中找不到的数据算法. 与reshape将一维数组转换为多维数组的运算过程相反的运算通常称为扁平化(flatten

Numpy数组索引为-1和None

numpy的数组操作方便,可以用:来切片,用布尔数组或者布尔表达式来查找符合条件的数据,也可以用数组作为另一个数组的索引来查找指定的数据.但有时也会见到数组索引为-1和None.两者的用法如下: 1.-1指定维度上的最后一个.例如shape为(3,3)的数组data,data[2,-1]等同于data[2,2]:data[-1]相当于data[2]:data[1,1:-1]等同于data[1,1:2] 2.None并不指代数组中的某一维,None用于改变数组的维度.例如data的shape为(3

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]) 利用花哨的

MySQL高级-索引优化

索引失效 1. 2.最佳左前缀法则 4. 8. 使用覆盖索引解决这个问题.

MongoDB 高级索引

考虑以下文档集合(users ): { "address": { "city": "Los Angeles", "state": "California", "pincode": "123" }, "tags": [ "music", "cricket", "blogs" ], "

MongoDB高级索引

1. 索引数组字段 创建和使用跟普通字段的索引一样. 2. 索引子文档字段: 创建索引: db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1}) 使用索引查询: db.users.find({"address.city":"Los Angeles","address.state":&qu