python二维数组

剑指offfer:二维数组中的查找

假如想象 提交于 2020-03-01 05:47:35
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 查找7返回True,查找5返回False -—— - —— - —— - —— - —— - —— - —— - -—— - —— - —— - —— - —— - —— - —— - -—— - —— - —— - —— - —— - —— - —— 分析:选取右上角的元素,若数字 等于 要查找的数字,则查找过程结束;             若 大于 要查找的数字,提出这个数字所在 的列;             若 小于 则提出这个数字所在的行,每一步都可以缩小查找的范围 代码:python 2.7.3 # -*- coding:utf-8 -*- class Solution: # array 二维列表 def Find(self, target, array): # 标识变量 found = False # 检查输入 None,空数组 if array == None: return found nrow=len(array)-1 ncol=len(array[0])-1 row=0 col=ncol while

二维数组中的查找[by Python]

我与影子孤独终老i 提交于 2020-03-01 05:34:11
题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:   首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。 举例: 如果在一个二维数组中找到数字7,存在则返回True,如果没找到则返回False。 首先,8大于7,下一次只需要在8的左边区域查找;然后,5小于7,下一次只需要在5的下方区域查找;按照这种规则进行查找,如果查找到相同的,则返回True,否则返回False。 Python实现: # -*- python3.6.6 -*- # -*- JluTiger -*- class Solution: # array 二维列表 def Find(self, target, array): # write code here rows = len(array) cols = len(array[0]) if rows >0 and cols >0: row

python生成二维数组的坑

こ雲淡風輕ζ 提交于 2019-12-15 12:20:16
做leetcode时,想用python生成二维数组,使用了[[0]*n]*n 发现答案和想的不对,查找原因发现这么创建数组,更改一个数会将一列全部更改 >>> cd [[2, 1, 0], [2, 1, 0], [2, 1, 0]] >>> cd = [[0]*3]*3 >>> cd [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> id(cd[0][0]) 140734705414960 >>> id(cd[1][0]) 140734705414960 >>> id(cd[2][0]) 140734705414960 原来这个操作是将地址复制到一个列表中,其实只有一行数 正确的做法是 [[0]*n for i in range(n)] 来源: CSDN 作者: 挖了蘑菇累死 链接: https://blog.csdn.net/qq_43168601/article/details/103546593

NumPy简明教程(二、数组1)

匿名 (未验证) 提交于 2019-12-03 00:30:01
NumPy数组是一个多维数组对象,称为ndarray。其由两部分组成: 实际的数据 描述这些数据的元数据 大部分操作仅针对于元数据,而不改变底层实际的数据。 关于NumPy数组有几点必需了解的: NumPy数组的下标从0开始。 同一个NumPy数组中所有元素的类型必须是相同的。 在详细介绍NumPy数组之前。先详细介绍下NumPy数组的基本属性。NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是NumPy中的轴(axes),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量――秩,就是数组的维数。 NumPy的数组中比较重要ndarray对象属性有: ndarray.ndim:数组的维数(即数组轴的个数),等于秩。最常见的为二维数组(矩阵)。 ndarray.shape:数组的维度。为一个表示数组在每个维度上大小的整数元组。例如二维数组中,表示数组的“行数”和“列数”。ndarray.shape返回一个元组,这个元组的长度就是维度的数目,即ndim属性。 ndarray.size:数组元素的总个数,等于shape属性中元组元素的乘积。 ndarray

二维数组中查找-Python

牧云@^-^@ 提交于 2019-12-02 21:19:24
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 时间限制:1秒 空间限制:32768K 热度指数:1448982 本题知识点: 查找 数组 1.全局顺序查找 运行时间:446ms 占用内存:5636k #思路:一行一行顺序查找# -*- coding:utf-8 -*- class Solution: # array 二维列表 def Find(self, target, array): # write code here for i in range(len(array)): for j in range(len(array[0])): if target > array[i][j]: print("continue:",i,array[i][j]) continue elif target == array[i][j]: print("true:",array[i][j]) return True return False 2.根据数据规律快速查找 运行时间:364ms 占用内存:5752k # -*- coding:utf-8 -*- ''' 思路 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,

python numpty 中shape的用法,numpy.array 的shape属性理解

怎甘沉沦 提交于 2019-12-02 19:58:19
numpy 创建的数组都有一个shape属性,它是一个元组,返回各个维度的维数。有时候我们可能需要知道某一维的特定维数。 二维 >>> import numpy as np >>> y = np.array([[1,2,3],[4,5,6]]) >>> print(y) [[1 2 3] [4 5 6]] >>> print(y.shape) (2, 3) >>> print(y.shape[0]) 2 >>> print(y.shape[1]) 3 y是一个两行三列的二维数组,y.shape[0]代表行数,y.shape[1]代表列数。 三维 >>> x = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[0,1,2]],[[3,4,5],[6,7,8]]]) >>>> print(x) [[[1 2 3] [4 5 6]] [[7 8 9] [0 1 2]] [[3 4 5] [6 7 8]]] >>> print(x.shape) (3, 2, 3) >>> print(x.shape[0]) 3 >>> print(x.shape[1]) 2 >>> print(x.shape[2]) 3 x是一个包含了3个两行三列的二维数组的三维数组,x.shape[0]代表包含二维数组的个数,x.shape[1]表示二维数组的行数,x.shape[2

Python数据分析之numpy学习

*爱你&永不变心* 提交于 2019-12-01 12:12:27
Python数据分析之numpy学习 Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心。 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有关数组的属性和函数 3)数组元素的获取--普通索引、切片、布尔索引和花式索引 4)统计函数与线性代数运算 5)随机数的生成 数组的创建 numpy中使用array()函数创建数组, array的首个参数一定是一个序列,可以是元组也可以是列表。 一维数组的创建 可以使用numpy中的arange()函数创建一维有序数组,它是内置函数range的扩展版。 In [1]: import numpy as np In [2]: ls1 = range(10) In [3]: list(ls1) Out[3]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [4]: type(ls1) Out[4]: range In [5]: ls2 = np.arange(10) In [6]: list(ls2) Out[6]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [7]: type(ls2) Out[7]: numpy.ndarray 通过arange生成的序列就不是简简单单的列表类型了,而是一个一维数组。