Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是bug还是我用错了_Python_Pytorch_Median_Torch - Fatal编程技术网

Python 是bug还是我用错了

Python 是bug还是我用错了,python,pytorch,median,torch,Python,Pytorch,Median,Torch,我试图得到每一行2D torch.tensor的中值。但与使用标准阵列或numpy相比,结果并不是我所期望的 import torch import numpy as np from statistics import median print(torch.__version__) >>> 0.4.1 y = [[1, 2, 3, 5, 9, 1],[1, 2, 3, 5, 9, 1]] median(y[0]) >>> 2.5 np.median(y,

我试图得到每一行2D torch.tensor的中值。但与使用标准阵列或numpy相比,结果并不是我所期望的

import torch
import numpy as np
from statistics import median

print(torch.__version__)
>>> 0.4.1

y = [[1, 2, 3, 5, 9, 1],[1, 2, 3, 5, 9, 1]]
median(y[0])
>>> 2.5

np.median(y,axis=1)
>>> array([2.5, 2.5])

yt = torch.tensor(y,dtype=torch.float32)
yt.median(1)[0]
>>> tensor([2., 2.])

看起来这是本期中提到的Torch的预期行为


上面链接中提到的推理

中位数在奇数个元素的情况下返回“middle”元素,否则在middle元素之前返回一个元素(也可以按照另一种约定取中间元素周围的两个元素的平均值,但这将是两倍的成本,所以我决定使用这一个)


您可以使用pytorch模拟numpy中值:

import torch
import numpy as np
y =[1, 2, 3, 5, 9, 1]
print("numpy=",np.median(y))
print(sorted([1, 2, 3, 5, 9, 1]))
yt = torch.tensor(y,dtype=torch.float32)
ymax = torch.tensor([yt.max()])
print("torch=",yt.median())
print("torch_fixed=",(torch.cat((yt,ymax)).median()+yt.median())/2.)

谢谢,那我就用numpy。这没什么大不了的。我可以通过其他函数模拟真实均值吗?
x.分位数(q=0.5)
提供与
np.中值(x)