减法后改变数组的大小

时间:2018-03-15 09:17:39

标签: python

我想简单地减去尺寸为784×1的2个矩阵 使用此代码

w2 = G.w - alpha *temp
print(w2.size)

但是w2是一个784×784矩阵。为什么元素减法不能正常工作? temp和G.w都是784×1矩阵,alpha是标量(alpha = 0.1) 我在Windows 10上使用pycharm。 重新思考创建G.w和temp

2 个答案:

答案 0 :(得分:0)

使用reshape()

w2 = G.w - alpha *temp.reshape(-1,1)
print(w2.shape)
(784,1)

transpose()(速度稍慢,见示例):

w2 = G.w - alpha *temp.transpose()
print(w2.shape)
(784,1)

<强>实施例

A = np.random.rand(100,1)
B = np.random.rand(1,100)

print(A.shape)
(100, 1)

print(B.shape)
(1, 100)

print((A - 0.1*B).shape)
(100, 100)

print((A - 0.1*B.reshape(-1,1)).shape) #3.86 µs per loop
(100, 1)

print((A - 0.1*B.transpose()).shape) #5.27 µs per loop
(100, 1)

答案 1 :(得分:0)

这可能是因为您的运营商不按照您的想法工作 对于例如如果temp是数组[1,2,3]alpha2那么

alpha*temp = [1,2,3,1,2,3]

而不是= [2,4,6]

你可以使用普通python数组的numpy数组

#!....initialize G ,w ,alpha, temp
w1 = G*w - alpha*temp
#w1 will be a 784x1 array
w2 = numpy.zeros((784,784))
for i in range(w1.shape[0]):
   w2[i][0] = w1[i]  #this will set first coloumn to w1