python - 为什么 x[ :, 0] = x[0] 不能用于单个行向量?

标签 python vector numpy

我是 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/

相关文章:

python - 使用光流对图像进行对流

c++ - 调整大小std::vector <std::unique_ptr <T >>的性能

python - 当我一开始就没有使用 xrange 时,为什么没有定义 xrange?

python - 奇怪的 MySQL Python mod_wsgi Can't connect to MySQL server on 'localhost' (49) 问题

c++ - 为什么我看到 vector 的大小为零?

c++ - 包含在 main 方法中抛出错误的类对象的 vector

python - 从二维 numpy 数组创建数据历史记录?

python - 高级切片 : Given a list of index, 从 numpy 数组中选取不同的元素

python - Numpy 数组仅显示唯一行

python - 530 使用 ftplib 进行身份验证时出错