python列表转二维数组_[Python]二维数组的创建、转换、浅拷贝

在操作Table、Matrix、Dataframe这些数据的时候,都离不开二维数组的问题,在此记录一下遇到的几个问题

浅拷贝问题

也就是在列表的复制时,嵌套结构不会被复制过去,如下:

>>> lists = [[]] * 3

>>> lists

[[], [], []]

>>> lists[0].append(3)

>>> lists

[[3], [3], [3]]

官方简历创建一个定长列表可以这么做:

>>> lists = [[] for i in range(3)]

>>> lists[0].append(3)

>>> lists[1].append(5)

>>> lists[2].append(7)

>>> lists

[[3], [5], [7]]

二维数组的创建

列表生成式:两个for循环创建

>>> test = [[0 for i in range(m)] for j in range(n)]

or

>>> test = [[0] * 5 for i in range(2)]

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

使用Numpy创建:指定行、列生成

>>> import numpy as np

>>> test = np.zeros((m, n), dtype=np.int)

DataFrame转二维数组

如果要去掉columns和index直接获取DataFrame中的值,可以这样:

>>> test = pd.DataFrame(columns=['1', '2', '3'], index=['a', 'b', 'c'])

123

aNaNNaNNaN

bNaNNaNNaN

cNaNNaNNaN

>>> test_array = test.values

array([[nan, nan, nan],

[nan, nan, nan],

[nan, nan, nan]], dtype=object)

如果要创建DataFrame,也可以先通过ndarray来创建(使用列表生成同理):

>>> import numpy as np

>>> import pandas as pd

>>> test = np.zeros((m, n), dtype=np.int)

>>> test_dataframe = pd.DataFrame(test)

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值