我有一个变量X
,它可以是标量或数组。在这两种情况下,我都希望扩展X
y = np.array([0.5, 1.5])
如果X
是标量,那么
(X*y).sum()
如果X
是一个矩阵,比如说2维矩阵,我想这样做
(X[..., np.newaxis]*y[np.newaxis, np.newaxis, ...]).sum()
我正在用创建y
try:
ndim = X.ndim
except AttributeError:
ndim = 0
y = np.array([0.5, 1.5], ndmin=ndim+1)
它允许我用X[..., np.newaxis]*y
进行乘法:y
现在独立于我计算中X
的形状。但是,如果X
是矩阵,我仍然需要做X[..., np.newaxis]
,如果它是标量,我只需要做X
。你知道吗
如何在代码开始时操纵X
,以便
(X*y).sum()
以及以后类似的操作,不管X
是否是矩阵?你知道吗
不需要
y
中的np.newaxis
。没有它们你也能得到同样的结果。对于X
,我想您可以执行以下操作:如果要将其推广到多个操作,只需在代码中的某个位置添加一行即可:
稍后只需使用
(X * y).sum()
,因为它将同时适用于X = number
和X = ndarray
。你知道吗至于
y
,您不需要添加数字维度,numpy有smart broadcasting用于乘法。你知道吗完整示例:
相关问题 更多 >
编程相关推荐