脾气暴躁的算术

时间:2018-12-01 17:26:54

标签: python numpy numpy-ndarray

我有以下代码:

import numpy as np
x=np.array([[3, 5, 1]])
print(x.shape) #get (1,3)
np.multiply(x.shape, 8) #get [ 8, 24]

print(*x.shape) # get 1 3
np.array((np.multiply(*x.shape), 8)) #get [3, 8]

请解释为什么/如何np.multiply(* x.shape,8)得到[3,8]吗?

2 个答案:

答案 0 :(得分:1)

正在发生的事情是通过这样做

np.multiply(*x.shape)

您正在使用(1,3)运算符对元组*进行拆包,并将每个元素作为参数传递给np.multiply。这样就得出1*3为3。

然后,您只是将结果包装到8的数组中,因此最终得到的数组是[3, 8]

答案 1 :(得分:0)

*打开可迭代项的包装。因此,如果x.shape(1,3),而您呼叫np.multiply(*x.shape),则实际上将呼叫np.multiply(1,3),得到38只是硬编码的,所以那里没什么特别的。

此外,因为您写的是:8在这里不是np.multiply的自变量。