1. python如何创建空数组
Python创建空数组的三种方式:
1、numpy指定形状为0
实际上,empty生成的数组当然可以为空,只要我们指定了相应的形状。例如,如果我们传入数组的形状参数为(0,3),则可以生成目标空数组:
所以,生成的数组是否为空,不在于你用的是不是empty,而在于传入的形状参数。当然, 这里的empty换成ones或者zeros也都可以,只要形状是(0, 3)即可。
2、利用空列表创建
初始化numpy数组的一种方式是由列表创建,那么当我们传入的列表是空列表时即可创建空数组。特别的,为了创建指定列数的空列表,我们需要传入指定个数的嵌套空列表,然后转置即可。
3、利用pandas转换生成
numpy和pandas是一对好搭档,常常需要对二者数据进行转换,在创建空数组时自然也可以。为了创建一个空数组,我们可以首先考虑先创建一个空的DataFrame,然后由其转换为numpy对象即实现了创建空数组。
首先,我们创建一个仅有列名、而没有索引和值的空DataFrame:
进而,可由该DataFrame对象转化为空数组:
2. Python基本内置数据类型有哪些
内置类型是指任何语言在设计初期定义的类型,如C语言中的int、double、char等。它也是在一种语言中最基本的类型,与编译器编译出的代码具有重大关系。值得一提的是,不同语言也拥有不同的内置类型, 但是所有内置类型的定义都与计算机的运算方式相关。
Python主要内置类型包括数值、序列、映射、类、实例和异常等。
数值类型:全局中只有一个(Python在解释器启动的时候,Python会用None类型生成一个None的对象),包括int类型、float类型、complex类型、bool类型。
迭代类型:在Python中,迭代类型可以使用循环来进行遍历。
序列类型:list(是可变序列,通常用于存放同类项目的集合)、tuple(是不可变序列,通常用于储存异构数据的多项集)、str(在Python中处理文本数据是使用str对象,也称为字符串。字符串是由Unicode码位构成的不可变序列。)、array、range(表示不可变的数字序列,通常用于在for循环中循环指定的次数)、bytes(由单个字节构成的不可变序列)、bytearray(bytes对象的可变对应物)、memoryvie(二进制序列)
映射类型:映射对象将具有hash的值映射到任意对象。映射是可变的对象。目前只有一种标准映射,即dictionary。字典的键几乎是任意值,也就是说,包含列表、字典或其他可变类型的值。
集合类型:作为一种无序的多项集,集合并不记录元素位置或插入顺序。相应地,集合不支持索引、切片或其他序列类的操作。目前Python有两种内置集合类型:set和frozenset。
set类型是可变的,其内容可以使用add()和remove()这样的方法来改变。由于是可变类型,它没有哈希值,且不能被用作字典的键或其他集合的元素。
frozenset类型是不可变并且具有哈希值,其内容在被创建后不能再改变,因此它可以被用作字典的键或其他集合的元素。
上下文管理类型:with语句
其他类型:模块、class、实例、函数、方法、代码、object对象、type对象、ellipsis(省略号)、notimplemented
3. python创建矩阵不用numpy
在python中定义一个二维数组,
先看如下例子:
a = [1, 2, 3]
print(a * 3)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
print([a * 3])
[[1, 2, 3, 1, 2, 3, 1, 2, 3]]
这并不是一个二维数组,此方法不可用。但可用来扩展列表的长度。
再看下面一个例子:
a = [1, 2, 3]
matrix = [a] * 3
print(matrix)
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
此方法,出现的结果好像是建立了一个二维数组。但经过如下测试,
matrix[0][1] = 5
print(matrix)
[[1, 5, 3], [1, 5,3], [1, 5, 3]]
发现,修改的是每个List的第二个元素。
经过查看官方文档:https://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange
发现matrix = [array] * 3操作中,只是创建3个指向array的引用,所以一旦array改变,matrix中3个list也会随之改变。
并根据文档提示,可用入下办法创建一个矩阵。
例如创建一个3*3的数组
方法1 直接定义
matrix = [[0, 0, 0], [0, 0, 0], [0, 0, 0]][/py]
方法2 间接定义
matrix = [[0 for i in range(3)] for i in range(3)]
4. Python 把一组bytes数据,按每2个字节取出写入一个新数组,如何做到
dt=[{"ip","sh","li"},{"qw","ty","ko"}] c.extend([i for i in dt if 'ip' in i or 'qw' in i])
Python 3.5.2 (default, Dec 7 2016, 23:38:49)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "right", "credits" or "license" for more information.
>>> dt=[{"ip","sh","li"},{"qw","ty","ko"}]
>>> c=[]
>>> c.extend([i for i in dt if 'ip' in i or 'qw' in i])
>>> c
[{'li', 'sh', 'ip'}, {'ko', 'qw', 'ty'}]
5. python 创建数组
start = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
110.00000000000001, 198.0, 198, 396, 100, 150.0,
100, 150.0, 225.0, 225.0, 100, 260.0, 1326.0, 100, 120.0, 100, 100,
100, 100, 100, 100, 100, 100, 100, 100, 100]
stop = [2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
3400.0, 8840.0, 2000, 2000, 2000, 4600.0, 2000, 4600.0,
10580.0, 10580.0, 2000, 7600.0, 58520.0, 2000, 3600.0, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000]
print(len(start))
print(len(stop))
marix = [x for i in range(0, 37)
for x in range(int(start[i]), int(stop[i]), 100)]
print(marix)
列表解析语法:
[expression for iter_val in iterable]
[expression for iter_val in iterable if cond_expr]
你的start和stop里除了int还含有float类型,解析的时候用int()转换
6. 为什么python数组不用qp=[[0]*4]*4
因为没有这个数组类型。
Python中的数组类型有六种,有list可变的动态列表,tuple不可变的列表,array数组是可变的,存储相同类型的数值,不能存储对象,字符串序列str数组,bytes对象数组,bytearray对象数组,所以没有qp这个数组类型,所以才不能用qp等于这个数组。
7. byte[] data = new byte[2]; data[0] = 0x1b; data[1] = 0x5d; serialPort1.Write(data, 0, 2);
byte[]data的是创建一个byte类型的数组,数组的名字叫做data.
=nwe byte[2]的意思是这个新的数组,有两个byte类型的元素,[2]中的数字表示有几个元素。如果是10就表示有10个元素。
data[0] = 0x1b; 的意思是这个数组名data的第一个元素的值是十六进制的1b.其中的0x表示16进制。
data[1] = 0x5d;的意思是这个数组名data的第二个元素的值是十六进制的5d.其中的0x表示16进制。
这其它有一个重点是,数组是从0开始算的,不是从1开始算的。
serialPort1.Write(data, 0, 2); 的意思,serialPort1.Write()是串口的一个写数据的方法,data, 0, 2 是这个写数据方法的参数。 其中data数组为要写的全部数据,0是从data数组中的第0个元素开始写,2表示为取2个元素写入。
合起来的意思就是同时向串口写入data中的两个元素0-1。由于上面指定了两个元素的值,分别是0x1b和0x5d。 实际上就是向串口写入0x1b和0结0x5d.
8. python的builtin function 中的bytearray方法该如何使用
使用引入是
from
time
import
*,引入换成
import
time。
1、
就是调用时类型错误撒,把相关语句出来看看。
2、这个问题偶尔会出现。通常是下标变量越界。比如list里有5个元素,你要取第6个元素,当然就没了。
也有可能你自己误以为它是个字典,你也按字典的语法写的,阴差阳错,程序以为你在使用一个数组,这时也会出现下标越界的错误。
3、也许把你有问题的代码贴出来更好。
9. python定义一个单字节类型数组
Python中没有数组的数据结构,但列表很像数组。
和字符串一样,字节类型也是不可变序列,而字节数组就是可变版本的字节,它们的关系就相当于list与tuple。
字节(字节数组)是二进制数据组成的序列,其中每个元素由8bit二进制即1byte亦即2位十六进制数亦亦即0~255组成,字节是计算机的语言,字符串是人类语言,它们之间通过编码表形成一一对应的关系。