numpy的深复制与浅复制的区别_[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'])
	1	2	3
a	NaN	NaN	NaN
b	NaN	NaN	NaN
c	NaN	NaN	NaN
>>> 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)

参考资料:

[1]Python创建二维数组(关于list的一个小坑)

[2]将pandas中Dataframe数据转换为二维数组array

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值