在python中将一组元组转换为列表的numpy数组
因此,我一直在用集合方法“对称_差”在2个ndarray矩阵之间,方法如下:在python中将一组元组转换为列表的numpy数组,python,numpy,matrix,set,symmetric-difference,Python,Numpy,Matrix,Set,Symmetric Difference,因此,我一直在用集合方法“对称_差”在2个ndarray矩阵之间,方法如下: x_set = list(set(tuple(i) for i in x_spam_matrix.tolist()).symmetric_difference( set(tuple(j) for j in partitioned_x[i].tolist()))) x = np.array([list(i) for i in x_set]) 这种方法对我来说很好,但感觉有点笨拙……有
x_set = list(set(tuple(i) for i in x_spam_matrix.tolist()).symmetric_difference(
set(tuple(j) for j in partitioned_x[i].tolist())))
x = np.array([list(i) for i in x_set])
这种方法对我来说很好,但感觉有点笨拙……有没有更优雅一点的方法呢?:
你的代码没有问题。
不过,如果我必须对其进行代码审查,我会提出以下建议
spam_matrix_set = set(tuple(item) for item in x_spam_matrix.tolist())
partitioned_set = set(tuple(item) for item in partitioned_x[index].tolist())
disjunctive_union = spam_matrix_set.symmetric_difference(partitioned_set)
x = np.array([list(item) for item in disjunctive_union])
元组的简单列表:
In [146]: alist = [(1,2),(3,4),(2,1),(3,4)]
把它放在一套里:
In [147]: aset = set(alist)
In [148]: aset
Out[148]: {(1, 2), (2, 1), (3, 4)}
np.array
仅将该集合包装在对象数据类型中:
In [149]: np.array(aset)
Out[149]: array({(1, 2), (3, 4), (2, 1)}, dtype=object)
In [152]: np.array([(1,2),(3,4),(5,6,7)])
Out[152]: array([(1, 2), (3, 4), (5, 6, 7)], dtype=object)
In [153]: _.shape
Out[153]: (3,)
但将其放入列表中,并获得二维数组:
In [150]: np.array(list(aset))
Out[150]:
array([[1, 2],
[3, 4],
[2, 1]])
由于它是一个元组列表,因此也可以将其制成结构化数组:
In [151]: np.array(list(aset),'i,f')
Out[151]: array([(1, 2.), (3, 4.), (2, 1.)], dtype=[('f0', '<i4'), ('f1', '<f4')])
你们两个都有一个外部的
i
和另一个i
吗?此外,如果分割x_集合线,可能看起来不那么笨拙。是的,此块位于for循环下(这是交叉验证过程的一部分),因此“partitioned_x[i]”中的i不相关。我所说的“更优雅”是指不那么复杂……也许是一个内置函数,可以将一组元组转换为列表列表或类似的东西。谢谢你!明确强调了禅宗的明确性和可读性!正式注明,谢谢:)。很漂亮!!!非常感谢。我忽略了一个事实,“np.array(list(aset))”将给出与“np.array([list(I)for I in x_set])”相同的结果。这正是我要找的。
In [152]: np.array([(1,2),(3,4),(5,6,7)])
Out[152]: array([(1, 2), (3, 4), (5, 6, 7)], dtype=object)
In [153]: _.shape
Out[153]: (3,)