当条件为真时,我正在尝试将一个矩阵中的选择性列添加到另一个矩阵中。我已经尝试了各种组合,但是它使用np.append等命令添加了行,对您有所帮助。谢谢
我尝试了np.append,np.concatenation,np.hstack命令,但没有得到想要的解决方案。
n,m=np.shape(K)
Z=np.array([])
for number in range(m):
A=function
if A<0.05:
Z = np.append(Z,np.vstack(K[:,number]))
我希望Z矩阵的K列满足条件A。 Z = [K [:,3] K [:,8] K [:,10]] p
答案 0 :(得分:0)
In [21]: Z=np.array([])
In [22]: Z.shape
Out[22]: (0,)
您希望如何向具有这种形状的数组中添加一些东西?
np.append
确实有效,但这只是因为如果首先确保Z
至少是1d,那么它就可以解决它。
In [23]: np.append(Z,np.arange(10))
Out[23]: array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
我们需要在numpy
中使用某种大胆的大写字母,表示不要尝试在数组中附加(或连接或堆叠)数组。
您尝试建立一列列表,然后仅使用一个串联吗?
alist = []
for i in [3,8,10]:
alist.append(K[:,[i]])
print(alist)
Z = np.concatenate(alist, axis=1)
# Z=[K[:,3] K[:,8] K[:,10]]
或
alist = []
alist.append(3); alist.append(8); alist.append(10)
Z = K[:,alist]
重复连接数组有两个大问题-速度很慢,而且很难入门。 (0,)形状数组很热,可以有效替代空列表。
如果您需要反复执行操作,请考虑使用列表。列表附加相对较快,并且易于使用。
答案 1 :(得分:0)
numpy实际上是用于快速/鲁棒的矩阵运算,例如乘法,加法等。
因此,您正在处理排序行/列表的结构和操作。我强烈建议您使用Pandas Dataframe
您可以根据条件轻松添加列,甚至合并两个矩阵(是的,例如sql joins)。
df = pd.Dataframe(npArray)
df.assign('newcolumn', yourNewColumnValuesAsList)