Python将1-D阵列转换为N-D阵列

时间:2017-04-19 03:58:24

标签: python

我是python的新手,想要将数据从1-D数组更改为N-D数组。 请参阅下面的示例数据:

a = array([['T-Shirts', '1 Piece'],
           ['Capris', 'Leggings', 'Skirts']], dtype=object)

我希望获得如下数据:

array([[['T-Shirts'], ['1 Piece']],
       [['Capris'], ['Leggings'], ['Skirts']]], dtype=object)

3 个答案:

答案 0 :(得分:2)

Numpy不支持锯齿状数组,这是你想要输出的数据。最好的办法是将数据移动到本机Python列表中。

a = [['T-Shirts,1 Piece'], ['Capris,Leggings,Skirts']]
out = [[[y] for y in x[0].split(',')] for x in a]
out

# returns:
[[['T-Shirts'], ['1 Piece']], [['Capris'], ['Leggings'], ['Skirts']]]

答案 1 :(得分:1)

使用Pandas比较容易:

import pandas as pd
# note: removed useless sublists
x = ['T-Shirts,1 Piece', 'Capris,Leggings,Skirts']
pd.Series(x).str.split(',', expand=True)

这给出了:

          0         1       2
0  T-Shirts   1 Piece    None
1    Capris  Leggings  Skirts

答案 2 :(得分:0)

设置

看起来您正在使用numpy包,因为您的代码具有<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="jquery-3.2.0.min.js"> </script> <body id="bootstrapOverride"> <div class="container-fluid" id="parent"> <div id="child"> <h1 class="text-center"><a href="https://en.wikipedia.org/wiki/Special:Random" target="_blank" id="random_page"> Click here for a random article </a></h1> <div id="SearchBar"> <i class="glyphicon glyphicon-search" id="glyph"> </i> </div> <div id="child4"> <h1 id="genericText" class="text-center"> Click on icon to search </h1> </div> </div> </body>array(...)格式。因此,为了准备显示代码示例,我执行了以下命令:

dtype=...

之后,当我进入时:

import numpy as np
a = np.array([['T-Shirts', '1 Piece'], ['Capris', 'Leggings', 'Skirts']])

我得到了这个结果(你的出发点):

a

期望的输出

当我执行此命令时:

array([['T-Shirts', '1 Piece'], ['Capris', 'Leggings', 'Skirts']], dtype=object)

我得到了这个结果:

[[[x] for x in l] for l in a]

我运行的命令是Python列表理解。使用for循环创建列表是syntactic sugar。您可以阅读更多here或搜索“python list comprehension”。

注意:我没有使用numpy进行转换。如果你想要以前的同类清单,可以将代码放在[[['T-Shirts'], ['1 Piece']], [['Capris'], ['Leggings'], ['Skirts']]] 内,如下所示:

np.array( )

该命令的结果是:

np.array([[[x] for x in l] for l in a])

加成

另外,在旁注中,您可以这样做:

array([[['T-Shirts'], ['1 Piece']], [['Capris'], ['Leggings'], ['Skirts']]], dtype=object)

得到这个:

[[x] for l in a for x in l]