python之array赋值技巧分享

首先上一段程序:

import numpy as np

list_a = list(range(10))
print("list_a: {}".format(list_a))

array_a = np.array(list_a)
print("array_a: {}".format(array_a))

list_b = [True,False,True,True,False,False,True,False,True,False]
print("list_b: {}".format(list_b))

array_b = np.array(list_b)
print("array_b: {}".format(array_b))

mask = np.zeros(10,dtype=np.bool)
print("mask: {}".format(mask))

下面是这段程序的输出:

list_a: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
array_a: [0 1 2 3 4 5 6 7 8 9]
list_b: [True, False, True, True, False, False, True, False, True, False]
array_b: [ True False True True False False True False True False]
mask: [False False False False False False False False False False]

从输出可以看出list和array的不同之处是list是以逗号作为分隔符,而array是以空格作为分隔符。还有numpy中的zeros生成的是array。其实,list和array还有很多的不同之处,例如:

list是Python中的普通列表对象,支持append和attend操作,没有shape属性;array是numpy数据库中的对象,不支持append和attend操作,具有shape属性。

一个list中可以存放不同类型的数据,如int、float、str或者布尔型;而array中只能存放相同类型的数据。

list不支持乘法操作;array支持乘法操作。

而对于赋值操作,操作对象只能是array,而索引可以是array也可以是list:

d = array_a[list_b]
print("array_a[list_b]: {}".format(d))

e = array_a[array_b]
print("array_a[array_b]: {}".format(e))

mask[list_b] = 1
print("mask: {}".format(mask))

输出如下:

array_a[list_b]: [0 2 3 6 8]
array_a[array_b]: [0 2 3 6 8]
mask: [ True False True True False False True False True False]

此番操作可以将array_a中对应b数组或列表True位上的元素组成一个新的数组。

如果对列表进行如此赋值操作,即把程序中的array_a换成list_a,则会报错:

d = list_a[list_b]
TypeError: list indices must be integers or slices, not list

e = list_a[array_b]
TypeError: only integer scalar arrays can be converted to a scalar index

以上这篇python之array赋值技巧分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解

    对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解 列表赋值: >>> a = [1, 2, 3] >>> b = a >>> print b [1, 2, 3] >>> a[0] = 0 >>> print b [0, 2, 3] 解释:[1, 2, 3]被视作一个对象,a,b均为这个对象的引用,因此,改变a[0],b也随之改变 如果希望b不改变,可以用到切片 >>> b = a[:] &

  • python中的数组赋值与拷贝的区别详解

    具体的注解我已经写在了程序里面:通俗的解释了python里面的浅拷贝与深拷贝的不同,请看程序. # -*- coding: utf-8 -*- import numpy as np import copy as cp import matplotlib.pyplot as plt import time import math fig = plt.figure() ax = fig.add_subplot(241) # 定义一个多维数组 x = np.array([[1, 2, 3], [4,

  • Python的多维空数组赋值方法

    Python里面的list.tuple默认都是一维的. 创建二维数组或者多维数组也是比较简单. 可以这样: list1 = [1,2,] list1.append([3,4,]) 可以这样: list2 = [1,2,[3,4,],] 还可以这样: list3 = [1,2] list3.insert(2, [3,4]) 比较特殊的情况是: list0 = [] list0.append([]) 然后想给二维数组list0的第一个元素赋值.直接写list0[0][0]是会被编译器报错的. 那怎么

  • python实现给数组按片赋值的方法

    本文实例讲述了python实现给数组按片赋值的方法.分享给大家供大家参考.具体如下: 这段代码可以直接给数组的第5-7个元素赋值 inventory = ["sword", "armor", "shield", "healing potion"] inventory[4:6] = ["orb of future telling"] print inventory 运行结果如下: ['sword', 'arm

  • python之array赋值技巧分享

    首先上一段程序: import numpy as np list_a = list(range(10)) print("list_a: {}".format(list_a)) array_a = np.array(list_a) print("array_a: {}".format(array_a)) list_b = [True,False,True,True,False,False,True,False,True,False] print("list_

  • python property的使用技巧分享

    property属性 一种用起来像是使用实例属性一样的特殊属性,可以对应于某个方法 既要保护类的封装特性,又要让开发者可以使用 对象.属性 的方式操作方法,@property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对  () 小括号. 来看下求圆的面积的例子 class Circle(object): PI = 3.14 def __init__(self, r): # r圆的半径 self.r = r self.__area = self.PI * self.r * se

  • python使用建议与技巧分享(一)

    这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获. 1 如何创建指定长度且有特定值的list 不推荐方式 list1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] print list1 # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 推荐方式 list1 = [0] * 10 print list1 # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 其实,前一种方式一看就不符合DRY(Don't Rep

  • python使用建议与技巧分享(二)

    这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获. 1 如何在if语句中检测多个条件 不推荐方式 flag1 = 1 flag2 = 0 flag3 = 0 if flag1 == 1 or flag2 == 1 or flag3 == 1: print 'ok' 推荐方式 flag1 = 1 flag2 = 0 flag3 = 0 if 1 in (flag1, flag2, flag3): print 'ok' 可以看到,前一种方式重复代码太多,不推荐.

  • python 使用建议与技巧分享(四)

    这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获. 1 如何打印更易读的类 不推荐方式 class Point(object): def __init__(self, x, y): self.x = x self.y = y p = Point(3, 4) print p # <__main__.Point object at 0x0000000001E1B9E8> 推荐方式 class Point(object): def __init__(self,

  • Python 代码性能优化技巧分享

    如何进行 Python 性能优化,是本文探讨的主要问题.本文会涉及常见的代码优化方法,性能优化工具的使用以及如何诊断代码的性能瓶颈等内容,希望可以给 Python 开发人员一定的参考. Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 80% 的工作量.优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率. 改进算法,选择合适的数据结构 一个

  • Python中最大最小赋值小技巧(分享)

    码代码时,有时候需要根据比较大小分别赋值: import random seq = [random.randint(0, 1000) for _ in range(100)] #方法1: xmax, xmin = max(seq), min(seq) #方法2: xmax, *_, xmin = sorted(seq) 从上面这个来看,看不出来方法2的优势来,不过我们常用的是比较两个数的大小,并选取: dx, dy = random.sample(seq, 2) #方法1: dx, dy = m

  • Python中隐藏的五种实用技巧分享

    目录 1. ... 对象 2.解压迭代对象 3.展开的艺术 4.下划线 _ 变量 5.多种用途的else 循环 异常处理 1. ... 对象 没错,你没看错,就是 "..." 在Python中 ... 代表着一个名为 Ellipsis 的对象.根据官方说明,它是一个特殊值,通常可以作为空函数的占位符,或是用于Numpy中的切片操作. 如: def my_awesome_function():     ... 等同于: def my_awesome_function():     Ell

  • 18个帮你简化代码的Python技巧分享

    目录 什么是单行代码 为什么我需要它们 开始 1.if-else 2. elif 3. if 4.函数 5.循环(列表推导式) 6. if 循环 7. if else 循环 8. While 循环与 if else 9. 变量交换 10. 多重赋值 11. 将字符串写入文件 12.快速排序 13. 斐波那契数列 14. HTTP 服务器 15. 嵌套 For 循环 16. 输出不换行 17.类 18. 海象运算符:=(Python 3.8) 结论 大家好,我是海拥,在今天的博客中,我们将讨论 P

  • python技巧分享Excel创建和修改

    openpyxl是一个读写Excel文档的Python库,能够同时读取和修改Excel文档. openpyxl是一个开源项目,因此在使用之前需要先进行安装: pip install openpyxl openxpyxl中有三个不同层次的类,分别是Workbook.Worksheet和Cello.Workbook是对Excel工作簿的抽象,Worksheet是对表格的抽象,Cell是对单元格的抽象.每一个类都包含了若干属性和方法,以便于我们通过这些属性和方法获取表格中的数据.一个Workbook对

随机推荐