python数组

Python Numpy库

强颜欢笑 提交于 2020-01-28 02:23:49
1. 生成 ndarray array函数接收任意的序列型对象 array = [1,2,3,4] arr1 = np.array(array) 多层嵌套序列,如果长度相同 , 会自动转化为多维数组 array = [[1,2,3,4],[1,2,3,4]] arr1 = np.array(array) print(arr1) 可以使用方式来查看多维数组的信息 print("数组的纬度是 %s " % arr1.ndim) print("数组是 %d 行 %d 列" % arr1.shape) 其他方式生成 # 生成一维全零数组 zeroArr = np.zeros(5) # 生成多维全零数组(两行三列) zeroArr = np.zeros((2,3)) np.ones 是生成全1数组 , 参数与上面的参数一致 np.empty是生成未初始化的数组 , 参数与上面的参数一致 函数名 描述 array 将输入数据转换为ndarray asarray 将输入转换为ndarray, 如果输入已经是ndarray则不再复制 arange python内建函数range的数组版,返回一个数组 2. ndarray的数据类型 数据类型,即dtype,是一个特殊的对象,它包含了ndarray需要为某一种类型数据所申明的内存块信息 # 创建ndarray时指定数据类型 arr = np

NumPy数组

家住魔仙堡 提交于 2020-01-26 14:27:27
NumPy的数组类(numpy.array)中提供了很多便捷的方法,在实现深度学习时,我们将使用这些方法。 # 1.导入NumPy import numpy as np 这条语句就是“将numpy作为np导入”的意思。通过写成这样的形式,之后NumPy相关的方法均可通过np来调用。 # 2.生成NumPy数组 A = np.array([1,2,3]) np.array()接收Python列表作为参数,生成NumPy数组。 # 3.NumPy的算术运算 x = np.array([1,2,3]) y = np.array([2,4,6]) print("对应元素加法x+y=",x+y) print("对应元素减法x-y=",x-y) print("对应元素乘法x*y=",x*y) print("对应元素除法x/y=",x/y) 对应测试结果: # 4.NumPy的N维数组 A = np.array([[1,2],[3,4]]) # 创建二维数组A print(A) # 打印二维数组A print(A.shape) # 查看矩阵A的形状 print(A.dtype) # 查看矩阵A中元素的数据类型 对应测试结果: NumPy数组可以生成N维数组,这里只展示了二维数组(矩阵)的生成。 # 5.广播 A = np.array([[1,2],[3,4]]) B = np.array([10

算法 中等 | 31. 数组划分

天大地大妈咪最大 提交于 2020-01-25 07:53:59
算法 中等 | 31. 数组划分 题目描述 样例1 样例2 java题解 C++题解 python题解 题目描述 给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。 样例1 输入: [ ] ,9 输出:0 样例2 输入: [ 3,2,2,1 ] ,2 输出:1 解释:真实的数组为 [ 1,2,2,3 ] .所以返回 1 java题解 public class Solution { public int partitionArray ( int [ ] nums , int k ) { if ( nums == null || nums . length == 0 ) { return 0 ; } int left = 0 , right = nums . length - 1 ; while ( left <= right ) { while ( left <= right && nums [ left ] < k ) { left ++ ; } while ( left <= right && nums [ right ] >= k ) { right -- ; } if ( left <=

Ndarray对象

主宰稳场 提交于 2020-01-22 19:56:20
Ndarray对象 文章目录 Ndarray对象 一、关于 Ndarray 二、创建公式 三、使用 本文参考来源: https://www.yiibai.com/numpy/numpy_ndarray_object.html 一、关于 Ndarray NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。 ndarray 中的每个元素在内存中使用相同大小的块。 ndarray 中的每个元素是数据类型对象的对象(称为 dtype )。 从 ndarray 对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示。 下图显示了 ndarray ,数据类型对象( dtype )和数组标量类型之间的关系。 ndarray 类的实例可以通过本教程后面描述的不同的数组创建例程来构造。 二、创建公式 numpy . array ( object , dtype = None , copy = True , order = None , subok = False , ndmin = 0 ) 上面的构造器接受以下参数: 序号 参数及描述 1. object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。 2. dtype 数组的所需数据类型,可选。 3. copy 可选

剑指offer 调整数组顺序使奇数位于偶数前面 Python and C++

青春壹個敷衍的年華 提交于 2020-01-22 01:18:45
文章目录 题目描述 思路 做题可能出现的问题 python C++ 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路 不借助额外的空间,循环一次。p1和p2两个指针,p1指向第一个元素,p2指向第二个元素,p1找到第一个偶数,p2找到第一个奇数,[p1,p2-1]整体往后移一位,将奇数插到p1位置,然后p1+1。 做题可能出现的问题 array.insert(p1, array.pop(p2)),这里在python中可以直接实现删除一个,插入一个的动作。可以想像成链表。如果是c++数组的话,就必须要移动[p1,p2-1]中的所有字母。 python # -*- coding:utf-8 -*- class Solution: def reOrderArray(self, array): # write code here p1 = 0 while p1<len(array): while p1<len(array) and array[p1]%2==1: p1 += 1 p2 = p1 + 1 while p2< len(array) and array[p2]%2==0: p2 += 1 if p2 < len(array): array

列表:一个打了激素的数组2、3+习题复习

不问归期 提交于 2020-01-21 01:08:05
##从列表中获取元素 ※跟数组一样,我们可以通过元素的索引值(index)从列表获取单个元素,注意,列表索引值是从 0 开始的。 ##从列表删除元素 ※remove() (并不需要知道要删除元素在列表的哪个位置,只需要知道它存在里边接可以了,) ※del (他不是一个列表的方法,是一个语句,可以删列表中的元素,也可以删掉整个列表) ※pop() (python的列表实际上是用栈这种数据结构进行存储的,因此又pop弹出这么一个方法,它是从列表中取出最后一个元素并返回给你,pop方法也可以加上一个参数,) ##列表分片(Slice) ※利用索引值,每次我们可以从列表获取一个元素,但是我们总是贪心的,如果一次性需要获取多个元素,有没有办法实现呢?利用列表分片,我们可以简单的实现这个要求。 (左边的索引值表示需要开始的位置开始的下标,右边的是结束的位置,右边是不包含的,3-1=2,那么就会分片分出两个元素,利用列表分片我们可以得到原来列表的拷贝,原列表并没有发生任何的改变,分片还可以简写,从第一个开始,就没必要写一个0) (如果你想对列表做出某些修改,但是同时保持原来列表,那么直接使用[:]就可以获得原列表的拷贝) ##列表的一些常用操作符 ※比较操作符 (是从第0个元素开始比较的,只要有一个pk赢了,就算整个列表赢了,不用考虑后边的元素,跟字符串比较是同一个道理,) ※逻辑操作符

lintcode:子数组之和为0

一个人想着一个人 提交于 2020-01-20 17:58:43
题目: 子数组之和 给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置 样例 给出 [-3, 1, 2, -3, 4] ,返回 [0, 2] 或者 [1, 3]. 解题: 更新 子树的和是0,根据给的例子: [-3, 1, 2, -3, 4], 其累加和【-3,-2,0,-3,1】中心出现了一个数0 ,同时发现两个-3,第一个-3开始到第二个-3之前的部分就是这个子数组 数组【1,2,3,-5,3】,其累加和【1,3,6,1,5】,两个1之间的部分就是答案,根据元素数组:不包括第一个1的位置,包括第二个1的位置 所以:计算累加和,当和的值之前已经出现了,这个区间内的数就是子数组的起始id 注意:当包括0位置的时候,包括0位置,不包括最后一个位置 当不包括0位置的时候,包括上一个数位置,不包括当前位置 这个时候需要加入一个值防止是第一个数,put(0,-1),表示还没有数的时候数是0,起始位置是-1,这样当包括0位置的情况,转化为不包括0的情况 public class Solution { /** * @param nums: A list of integers * @return: A list of integers includes the index of the first number * and the index of

Python两数之和,并返回下标

◇◆丶佛笑我妖孽 提交于 2020-01-20 00:51:16
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 例如: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 思路(暴力解法:) 解题关键主要是想找到 num2 = target - num1 运用到列表知识 并且需要双重遍历 要求不输出重复值 值不会被二次利用,以免出现错误。 代码如下: def twoSum ( nums , target ) : for i in nums : i += 1 # 避免使用重复值, for j in nums : if target - j == i : # 核心思想 res = nums . index ( i ) , nums . index ( j ) return list ( res ) # 使返回值变为列表 来源: CSDN 作者: Cheng. py 链接: https://blog.csdn.net/weixin_45986798/article/details/104037957

浅谈python实现链表

妖精的绣舞 提交于 2020-01-20 00:10:04
一、前言 本节主要讲解内容如下: 1、单向链表 1.1 单链表概念 1.2 用单链表实现栈 1.3 用单链表实现队列 2、循环链表 2.1 循环链表的概念 2.2 用循环链表实现队列 3、双向链表 3.1 双向链表的概念 3.2 用双向链表实现双端队列 4.、位置列表的抽象数据类型 4.1 概念 在前面的博客中,我们了解到python的list类是一个经过高度优化的基于数组的结构,但是它有一些明显的缺点: 1.一个动态数组的长度可能超过实际存储数组元素所需的长度。 2.在实时系统中对操作系统的摊销边界是不可接受的。 3.在一个数组内部执行插入和删除操作的代价太高。 这里我们介绍一个链表的数据结构,链表和数组不同,链表依赖于更多的分布式表示方法,采用称为节点的轻量级对象,分配给每一个对象。每个节点维护一个指向它的元素的引用,并含一个或者多个指向相邻节点的引用,这样做的目的是为了集中的表示序列的线性顺序。 二、单向链表的概念 困,明天再更。 参考书籍:《数据结构与算法》 来源: CSDN 作者: 半符合适应 链接: https://blog.csdn.net/qq_36186768/article/details/104045338

Python Numpy中数据的常用的保存与读取方法

帅比萌擦擦* 提交于 2020-01-19 21:09:32
在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件进行介绍: 1.保存为二进制文件(.npy/.npz) numpy.save 保存一个数组到一个二进制的文件中,保存格式是.npy 参数介绍 numpy.save(file, arr, allow_pickle=True, fix_imports=True) file:文件名/文件路径 arr:要存储的数组 allow_pickle:布尔值,允许使用Python pickles保存对象数组(可选参数,默认即可) fix_imports:为了方便Pyhton2中读取Python3保存的数据(可选参数,默认即可) 使用 >>> import numpy as np #生成数据 >>> x=np.arange(10) >>> x array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) #数据保存 >>> np.save('save_x',x) #读取保存的数据 >>> np.load('save_x.npy') array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) numpy.savez 这个同样是保存数组到一个二进制的文件中,但是厉害的是