我是 python 的新手,但我正在尝试理解一些看似基础的东西。
创建一个向量:
x = np.linspace(0,2,3)
Out[38]: array([ 0., 1., 2.])
现在为什么 x[:,0] 不是一个值参数?
IndexError: invalid index
必须是x[0]。我有一个正在调用的函数,它计算:
np.sqrt(x[:,0]**2 + x[:,1]**2 + x[:,2]**2)
为什么无论输入如何,我所拥有的都不能为真?对于许多其他语言,它独立于数组中的其他行。也许我误解了一些基本的东西——如果是的话,我很抱歉。我想避免放置:
if len(x) == 1:
norm = np.sqrt(x[0]**2 + x[1]**2 + x[2]**2)
else:
norm = np.sqrt(x[:,0]**2 + x[:,1]**2 + x[:,2]**2)
无处不在。当然有办法解决这个问题...谢谢。
编辑:它在另一种语言中工作的一个例子是 Matlab:
>> b = [1,2,3]
b =
1 2 3
>> b(:,1)
ans =
1
>> b(1)
ans =
1
最佳答案
也许您正在寻找这个:
np.sqrt(x[...,0]**2 + x[...,1]**2 + x[...,2]**2)
可以有任意数量的维度来代替省略号 ...
另见 What does the Python Ellipsis object do? , 和 the docs of NumPy basic slicing
关于python - 为什么 x[ :, 0] = x[0] 不能用于单个行向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16529276/