本文主要探索如何在python中获得一个数组里的指定行和列(子数组)。

【生成数组】

我们要获得子数组,首先得生成一个数组,这里调用python里的numpy库,生成一个5行3列的顺序顺组。

import numpy as np
a = np.arange(15).reshape((5, 3))

结果如下图:

【获得子数组索引】

比如我们要取出 a 数组中的第2,4行和第1,2列生成数组 b ,数组 b 如下图所示:

由于python中数组的索引是从0开始的,那么此时我们的行索引就是[1,3],列索引就是[0,1]。

【使用索引取数据】

如果直接像matlab一样,行列一起索引,得到的结果有点意外。如下图所示:

所以,我们行和列分开取数据

b = a[:,[0,1]]
b = b[[1,3],:]

结果如下图:

这里就是先把第1,2列取出来生成新数组,然后在新数组里取出2,4行。当然行列取出的顺序可以更换。

【BUG】

以上其实还是很简单的,如果使用过matlab,可以说的很好理解的,但是就是这个python数组索引,我居然搞了两天,时刻怀念matlab。

大家注意,上面这些是在命令行里执行的,如果放到代码中,可能会出现以下问题:

IndexError: too many indices for array
TypeError: list indices must be integers or slices, not tuple
TypeError: only size-1 arrays can be converted to Python scalars

简直让你分分钟崩溃,就是个数组索引,python怎么这么会玩?

【DEBUG】

1、首先注意我们是从数组 a 里获得子数组 b ,所以如果你 a 的格式(type)是列表(list)的话,你需要转成数组

a= np.array(a)

2、行索引和列索引的格式是列表,而不是数组,转换函数如下:

Index = Index.tolist();

3、如果上面两个格式对了,但是还是报错的话,你需要考虑一下,你代码中类(class)里的对象(object)里的数据成员调用问题
首先,我们在方法__init__中定义了,很多数据成员,如self.feats = []。

然后,如果你在其他方法中要调用它的时候,又重新对他初始化,如上图:

feats = feats + 2

再对其进行运算时,可能就报错了。

所以,在调用这些数据时,全部从类中导出,比如

self.feats = self.feats + 2

这样就避免了很多问题~

猜你喜欢:

【Python】数组索引到底怎么整?相关推荐

  1. python数组索引和切片_python numpy数组的索引和切片的操作方法

    NumPy - 简介 NumPy 是一个 Python 包. 它代表 "Numeric Python". 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric, ...

  2. Python 数据分析三剑客之 NumPy(二):数组索引 / 切片 / 广播 / 拼接 / 分割

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  3. python数组操作加法_Numpy数组索引和/或加法似乎是

    我一直在研究numpy数组的基准测试,因为当我试图在脚本中用numpy数组替换python数组时,得到的结果比预期的要慢.在 我知道我错过了什么,我希望有人能澄清我的无知.在 我创建了两个函数并计时N ...

  4. python numpy array索引_Python NumPy 数组索引

    1.访问数组元素 数组索引与访问数组元素相同. 您可以通过引用其索引号来访问数组元素. NumPy数组中的索引以0开头,这意味着第一个元素的索引为0,第二个元素的索引为1等. 例如: 从以下数组中获取 ...

  5. B07_NumPy 高级索引(整数数组索引,布尔索引,花式索引)

    NumPy高级索引 NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引. 整数数组索引 以下实例获取数组中(0, ...

  6. A02_Python(基本数据类型,容器,函数,类),Numpy(数组array,数组索引,数据类型,数组中的数学,广播)

    Python的版本 基本数据类型 与大多数语言一样,Python有许多基本类型,包括整数,浮点数,布尔值和字符串.这些数据类型的行为方式与其他编程语言相似. Numbers(数字类型):代表的是整数和 ...

  7. python 数组 运算_python数据分析(二) python numpy--数组和矢量运算--数组对象

    Numpy numpy是数值计算最重要的基础包,几乎所有的科学运算的模块底层所用的都是numpy数组. Numpy本身没有提供多么高级的数据分析功能,他所提供的功能主要是: 1.具有矢量算术运算(用数 ...

  8. python数组遍历输出所有组合_python遍历列表和数组实例讲解

    python遍历实例总结 python同时遍历数组的索引和值的实例 你想在迭代一个序列的同时跟踪正在被处理的元素索引. 获取索引 内置的 enumerate() 函数可以很好的解决这个问题: > ...

  9. [转载] python数组的使用

    参考链接: Python中整数的最大可能值是多少? 原文地址为: python数组的使用 python数组的使用 python数组的使用 2010-07-28 17:17 1.Python的数组分三种 ...

最新文章

  1. 华为开源加法神经网络 | CVPR20 Oral
  2. 货物与产品的区别_详解海外仓与保税仓的区别特点!
  3. 金山网盾3.5.3版本预升级公告
  4. cursor.execute(sql) 执行结果集是有记录的 但是num=cursor.rownumber 返回值为0
  5. WPF XAML 从零开始认识XAML
  6. cv mat的shape_将ndarray转换为cv::Mat的最简单方法是什么?
  7. JVM笔记(一)数字在JVM中的表示
  8. java10个整数反向输出_输入一个整数,实现反转输出,如输入123,输出321。
  9. java递推_【Java】递归递推的应用
  10. 机器人动力学-拉格朗日方程
  11. mysql程序设计考试app_MySQL数据库设计与应用知到APP期末考试完整答案
  12. python雷达算法实现_基于Python的气象雷达工具包研究
  13. android手机如何截屏快捷键,手机截屏怎么弄,手把手教你手机截图方法
  14. 构造可以使n个城市连接的最小生成树—C语言实现
  15. 阅读笔记--计算机网络 自顶向下方法
  16. PP相关的 bapi
  17. 速写,没有前因后果,没有背景交待……
  18. BZOJ 1057 棋盘制作(最大黑白相间子矩阵)
  19. 【网络安全】一款针对Flutter的逆向工程分析工具
  20. 推荐60多个CSS GALLERY画廊网站

热门文章

  1. C#泛型委托,匿名方法,匿名类
  2. 从一个小demo开始,体验“API经济”的大魅力
  3. xcode项目集成CocoaPods
  4. 1:tcl-8.5.13-8.el7.x86_64: [Errno 256] No more mirrors to try.
  5. NO.152 移动互联时代如何做企业营销
  6. nyoj-205--求余数--(大整数取模)
  7. 数据结构(严蔚敏)之五——循环队列(c语言实现)
  8. numpy.random详解
  9. 简单API接口签名验证
  10. 第七章之main函数和启动例程