我是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)
答案 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]