这是什么标志?请看看目的。
>>> numpy.column_stack([[1], [1,2]])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/pymodules/python2.7/numpy/lib/shape_base.py", line 296, in column_stack
return _nx.concatenate(arrays,1)
ValueError: array dimensions must agree except for d_0
输入
[[1],[1,2]]
预期输出
[[NA,1], [1,2]]
一般
[[1],[2,2],[3,3,3],...,[n,n,n,n,n...,n]]
到
[[NA, NA, NA,..., NA,1], [NA, NA, ..., 2, 2], ...[n,n,n,n,n]]
其中列最初可以是三角形零矩阵。是的,您可以将术语NA理解为无。我的三角形矩阵几乎在下方。
>>> a=[[1],[2,2],[3,3,3]]
>>> a
[[1], [2, 2], [3, 3, 3]]
>>> len(a)
3
>>> [aa+['']*(N-len(aa)) for
...
KeyboardInterrupt
>>> N=len(a)
>>> [aa+['']*(N-len(aa)) for aa in a]
[[1, '', ''], [2, 2, ''], [3, 3, 3]]
>>> transpose([aa+['']*(N-len(aa)) for aa in a])
array([['1', '2', '3'],
['', '2', '3'],
['', '', '3']],
dtype='|S4')
答案 0 :(得分:1)
一个纯粹的numpy解决方案:
>>> lili = [[1],[2,2],[3,3,3],[4,4,4,4]]
>>> y = np.nan*np.ones((4,4))
>>> y[np.tril_indices(4)] = np.concatenate(lili)
>>> y
array([[ 1., nan, nan, nan],
[ 2., 2., nan, nan],
[ 3., 3., 3., nan],
[ 4., 4., 4., 4.]])
>>> y[:,::-1]
array([[ nan, nan, nan, 1.],
[ nan, nan, 2., 2.],
[ nan, 3., 3., 3.],
[ 4., 4., 4., 4.]])
我不确定你想要哪个三角形数组,还有np.triu_indices
(也许并不总是更快,但更容易阅读)
答案 1 :(得分:0)
column_stack将一列添加到数组中。该列应该是一个较小的(1D)数组。
当我尝试:
from numpy import *
x = array([0])
z = array([1, 2])
如果你这样做:
r = column_stack ((x,z))
你会得到这个:
>>> array([0,1,2])
因此,为了向第一个数组添加一列,可能是:
n = array([9])
arr = ([column_stack((n, x))], z)
它出现了这个:
>>> arr
([array([[9, 0]])], array([[1, 2]]))
它与“预期输出”具有相同的外观
希望这有用!