问个python的数组问题

问个python的数组问题,第1张

把DataDic={}放进第一个循环的里面就可以了。

之所以输出时候都是最后一次的数值,是因为你从始至终就只有一个dict,声明在了循环外面,所以你循环里面的前四行代码起到的作用就是修改这个dict的值,第五行就是把这个dict一遍又一遍加进了那个list里面。

而如果你把dict声明在循环里面的话,每一次循环都会新建一个新的dict,这样你循环最后一行就可以往list里面添加进不同的dict了。

一维数组情况:

二维数组情况:

3参数情况:

2参数情况:

1参数情况:

一维情况:

二维情况:

一维情况:

二维情况:

一维情况:

二维情况:第三个参数指定维度

只查看行数、或者列数

逗号隔开两个索引

某些行

某些列

可以看出append()函数在二维数组中添加元素,结果转为了一维数组。

那怎么保持二维数组呢?可以设置axis参数按行或者按列添加

可以看出先把二维数组降成了一维数组,再在索引为1的位置添加元素。

那么怎么保持在二维添加元素呢? 同样设置axis参数

也分按行和按列删除

标记缺失值: isnan()函数

补充缺失值:

同样axis参数可以指定拼接按行还是按列

2 hstack()函数:以水平堆叠的方式拼接数组

3 vstack()函数:以垂直堆叠的方式拼接数组

第二个参数还可以是数组,指定拆分的位置

hsplit()函数:横向拆成几个数组

vsplit()函数:纵向拆成几个数组

数组与数组之间的运算

数组与数值的运算

可以指定整个数组求和,还是按行或者按列

axis=0:每一列的元素求和

axis=1:每一行的元素求和

axis=0:每一列求均值

axis=1:每一行求均值

axis=0:每一列求最大值

axis=1:每一行求最大值

pandas有两个重要的数据结构对象:Series和DataFrame。

Series是创建一个一维数组对象,会自动生成行标签。

会自动生成行列标签

也可以用字典形式生成数据

在用字典生成数据的基础上,同时指定行标签

例如对下表的数据进行读取

4月是第四个表,我们应把sheet_name参数指定为3;因为索引是从0开始的。

可以看出read_excel()函数自动创建了一个DataFrame对象,同时自动把第一行数据当做列标签。

可以看出不给出header参数时,该参数默认为0。

header=1时结果如下:

header=None时结果如下:

index_col=0时,第0列为列标签

index_col=0时

usecols=[2]:指定第二列

指定多列

数据如下:

[外链转存失败,源站可能有防盗链机制,建议将保存下来直接上传(img-j1SHxY8y-1637655972909)(C:Users14051AppDataRoamingTypora ypora-user-imagesimage-20211114192949607png)]

nrows=3时

head()函数中参数为空默认前5行

指定head(3)时如下

numpy模块也是shape

查看特定列的书库类型

特定列数据类型转换

先查看一下所有数据

与单行相比,结果显示的格式不一样了

iloc()挑选:

或者给出区间

挑选数据要么标签,要么索引挑选

或者

或者写成区间

标签挑选

或者索引挑选

先查看一下数据

或者用字典一对一修改

[外链转存失败,源站可能有防盗链机制,建议将保存下来直接上传(img-a6QKIoie-1637655972912)(C:Users14051AppDataRoamingTypora ypora-user-imagesimage-20211123110431201png)]

isin()函数查看表中是否有该值

查看特定列是否有该值

可以看出上述代码并没有替换,那怎么替换呢?

末尾插入一列

指定插入到哪列

axis参数可以指定删除行还是删除列

指定标签删除

指定索引删除

方法三

指定行标签删除

指定索引删除

方法三:

先查看所有数据

info()函数查看数据类型,还可以查看是否有缺失值

isnull()函数查看是否有缺失值

在numpy模块中用isnan()函数

删除有缺失值的行

删除整行都为缺失值的行: 需要指定how参数

不同列的缺失值设置不同的填充值

默认保留第一个重复值所在的行,删除其他重复值所在的行

保留第一个重复值所在的行

保留最后一个重复值所在的行

是重复的就删除

降序如下

参数指定first时,表示在数据有重复值时,越先出现的数据排名越靠前

获取产品为单肩包的行数据

获取数量>60的行数据

获取产品为单肩包 且 数量>60 的行数据

获取产品为单肩包 或 数量>60 的行数据

stack()函数转换成树形结构

how参数指定外连接

on参数指定按哪一列合并

concat()函数采用 全连接 的方式,没有的数设置为缺失值

重置行标签

效果与concat()一样

末尾添加行元素

指定列求和

指定列求均值

指定列求最值

获取单列的

corr()函数获取相关系数

获取指定列与其他列的相关系数

[外链转存失败,源站可能有防盗链机制,建议将保存下来直接上传(img-46g9qgQw-1637655972913)(C:Users14051AppDataRoamingTypora ypora-user-imagesimage-20211123135643804png)]

groupby()函数返回的是一个DataFrameBy对象,该对象包含分组后的数据,但是不能直观地显示出来。

分组后获取指定列的汇总情况

获取多列的汇总情况

获取多列的情况

ta = pdread_excel(‘相关性分析xlsx’)

print(data)

corr()函数获取相关系数

获取指定列与其他列的相关系数

[外链转存中…(img-46g9qgQw-1637655972913)]

groupby()函数返回的是一个DataFrameBy对象,该对象包含分组后的数据,但是不能直观地显示出来。

分组后获取指定列的汇总情况

获取多列的汇总情况

获取多列的情况

#coding=utf-8

'''

Created on 2014-3-21

@author: Neo

'''

def PrintList(array):#输出数组

    for i in range(array__len__()):

        print array[i]

def SetList(array):#给数组赋值

    row = 11

    col = 11

    for i in range(array__len__()):

        for j in range(array[i]__len__()):

            array[i][j] = row

            row += 10

        col += 1

        row = col

        

    print "赋值后的二维数组:"

    PrintList(array) 

    

    return array   

        

def InitList(x, y):

    #初始化一个二维数组

    array = [([0]  y) for i in range(x)]

  

    return array

    

def GetListByCoord(array, radius, x, y):

    #根据半径来确定数组的行数和列数

    row_col = 2  radius + 1

    #初始化结果数组

    result = InitList(row_col, row_col)

    #获取传入的array的行数和列数

    arrayRow, arrayCol = len(array), len(array[0])

    #坐标x、y的值即为结果数组的中心,依此为偏移

    for i in range(result__len__()):

        for j in range(result__len__()):

            if (i+x-radius < 0 or j+y-radius < 0 or 

            i+x-radius >= arrayRow or j+y-radius >= arrayCol):

                result[i][j] = 0

            else:

                result[i][j] = array[i+x-radius][j+y-radius]

    

    #打印结果

    print "结果为:"

    PrintList(result)

if __name__ == '__main__':

    #数组7列6行

    array = SetList(InitList(6,7))

    GetListByCoord(array, 1, 3, 3)

    GetListByCoord(array, 2, 3, 3)

    GetListByCoord(array, 2, 0, 0)

    GetListByCoord(array, 2, 0, 6)

    GetListByCoord(array, 2, 5, 0)

    GetListByCoord(array, 2, 5, 6)

运行结果为:

---------------------------------------------------------------------------------------------

赋值后的二维数组:

[11, 21, 31, 41, 51, 61, 71]

[12, 22, 32, 42, 52, 62, 72]

[13, 23, 33, 43, 53, 63, 73]

[14, 24, 34, 44, 54, 64, 74]

[15, 25, 35, 45, 55, 65, 75]

[16, 26, 36, 46, 56, 66, 76]

结果为:

[33, 43, 53]

[34, 44, 54]

[35, 45, 55]

结果为:

[22, 32, 42, 52, 62]

[23, 33, 43, 53, 63]

[24, 34, 44, 54, 64]

[25, 35, 45, 55, 65]

[26, 36, 46, 56, 66]

结果为:

[0, 0, 0, 0, 0]

[0, 0, 0, 0, 0]

[0, 0, 11, 21, 31]

[0, 0, 12, 22, 32]

[0, 0, 13, 23, 33]

结果为:

[0, 0, 0, 0, 0]

[0, 0, 0, 0, 0]

[51, 61, 71, 0, 0]

[52, 62, 72, 0, 0]

[53, 63, 73, 0, 0]

结果为:

[0, 0, 14, 24, 34]

[0, 0, 15, 25, 35]

[0, 0, 16, 26, 36]

[0, 0, 0, 0, 0]

[0, 0, 0, 0, 0]

结果为:

[54, 64, 74, 0, 0]

[55, 65, 75, 0, 0]

[56, 66, 76, 0, 0]

[0, 0, 0, 0, 0]

[0, 0, 0, 0, 0]

楼上只能对应位置行两两比较,一旦相同行不在相同位置就不行了,建议使用集合交集思路

a = set([tuple(t) for t in a])

b = set([tuple(t) for t in b])

matched = nparray(list(aintersection(b)))

from xlrd import open_workbook

wb=open_workbook(r'd:/222xlsx')

tb=wbsheets()[0]

data=[]

for r in range(tbnrows):

val=[]

for c in range(tbncols):

valappend(tbcell_value(r,c))

dataappend(tuple(val))

print(data)

我很好奇,你们用的是什么框架,如果用的是pytest 应该搞这个完全没问题的,纯属好奇,同行。方便的话说下哈。

你这个问题很简单,如果你们用的事pytest 可以在公用函数里面定义一个函数取值,这个返回数据为

id=[]

for i in res["data"]:

####for j in i:

######## for k in i["list"]:

############ id append(k["iUserid"])

这个方法是在不改变数据内容的情况下,改变一个数组的格式,参数及返回值,官网介绍:

a:数组--需要处理的数据

newshape:新的格式--整数或整数数组,如(2,3)表示2行3列,新的形状应该与原来的形状兼容,即行数和列数相乘后等于a中元素的数量

order:

 首先做出翻译: order  : 可选范围为{‘C’, ‘F’, ‘A’}。使用索引顺序读取a的元素,并按照索引顺序将元素放到变换后的的数组中。如果不进行order参数的设置,默认参数为C。

(1)“C”指的是用类C写的读/索引顺序的元素,最后一个维度变化最快,第一个维度变化最慢。以二维数组为例,简单来讲就是横着读,横着写,优先读/写一行。

(2)“F”是指用FORTRAN类索引顺序读/写元素,最后一个维度变化最慢,第一个维度变化最快。竖着读,竖着写,优先读/写一列。注意,“C”和“F”选项不考虑底层数组的内存布局,只引用索引的顺序。

(3)“A”选项所生成的数组的效果与原数组a的数据存储方式有关,如果数据是按照FORTRAN存储的话,它的生成效果与”F“相同,否则与“C”相同。这里可能听起来有点模糊,下面会给出示例。

二、示例解释

1、首先随机生成一个4行3列的数组

2、使用reshape,这里有两种使用方法,可以使用npreshape(r,(-1,1),order='F'),也可以使用r1=rreshape((-1,1),order='F'),这里我选择使用第二种方法。通过示例可以观察不同的order参数效果。

通过例子可以看出来,F是优先对列信息进行 *** 作,而C是优先行信息 *** 作。如果未对r的格式进行设置,那么我们rashape的时候以“A”的顺序进行order的话,它的效果和“C”相同。

3、我们将r的存储方式进行修改,修改为类Fortan的方式进行存储。并做与第2步类似的 *** 作。

基础 *** 作样例:

1引入numpy,名称为np 

2接下来创建一个数组a,可以看到这是一个一维的数组 

3使用reshape()方法来更改数组的形状,可以看到看数组d成为了一个二维数组

4通过reshape生成的新数组和原始数组公用一个内存,也就是说,假如更改一个数组的元素,另一个数组也将发生改变 

5同理还可以得到一个三维数组 

reshape(-1,1)什么意思:

大意是说,数组新的shape属性应该要与原来的配套,如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。

举例:

同理,只给定行数,newshape等于-1,Numpy也可以自动计算出新数组的列数。

以上就是关于问个python的数组问题全部的内容,包括:问个python的数组问题、python数据分析模块:numpy、pandas全解、python 查找二维数组的相邻元素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9739831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存