【问题标题】:What does the syntax ndarray[:,list[i]] means in python?语法 ndarray[:,list[i]] 在 python 中是什么意思?
【发布时间】:2016-04-02 11:43:51
【问题描述】:

我正在网上查看 Python 教程。我对Python一无所知,所以我搜索了一下,没有找到答案。

有一些代码是这样的:

s = np.tanh(self.X[:,Y[t]])

其中,X 是 ndarray,Y 是列表列表(其中每个列表都是整数类型), np 是一个 numpy 对象,tanh 是双曲正切。

这个语法是什么意思?

【问题讨论】:

  • 你能展示一些示例代码吗?我怀疑所描述的代码是否真的有效。
  • X 几乎可以肯定不是列表列表,但可能是一个 numpy ndarray。
  • @DSM X 是使用“np.random.uniform”生成的。抱歉,正如我所说,我是 python 新手。

标签: python numpy syntax


【解决方案1】:

在 numpy 的上下文中,它可以例如允许访问列,例如在您的示例X[:, Y[t]] 中,它允许您访问由Y[t] 中的值索引的X 列。

: 基本上表示“所有行”,Y[t] 指定列索引。

这里有一个简单的例子来看看它的实际效果:

In [1]: import numpy as np

In [3]: m = np.array([['a', 'b'], ['c', 'd'], ['f', 'g']])

In [4]: m[:, 0]
Out[4]: 
array(['a', 'c', 'f'], 
      dtype='|S1')

In [5]: m[:, 1]
Out[5]: 
array(['b', 'd', 'g'], 
      dtype='|S1')

如果“列索引”是一个列表呢?

如果您使用m[:, some_list]: 冒号将要求所有行,然后列将是some_list 中的列索引,按此顺序

例如如果我们想要所有行和列[1, 0](按此顺序),您会得到:

In [53]: m[:, [1, 0]]
Out[53]: 
array([['b', 'a'],
       ['d', 'c'],
       ['g', 'f']], 
      dtype='|S1')

【讨论】:

  • 其实Y[t]也是一个列表。这意味着, Y 本身就是一个列表列表。因此,Y[t] 将是 [2,4,5,6,8,...]。 X[:,Y[t]] 的输出是什么情况?可能的猜测!输出可以是... m[ : , [0,1] ] => [ 'a' , 'c' , 'f' , 'b' , 'd' , 'g' ] 对吗?跨度>
  • @HemendraSharma m[:, [0,1]] 会要求“m 的所有行,在第 0 列和第 1 列中”,我在答案中添加了跟踪来解释
猜你喜欢
  • 2019-06-25
  • 2016-02-20
  • 1970-01-01
  • 2013-11-02
  • 2015-09-18
  • 1970-01-01
  • 2021-05-12
  • 2014-03-31
相关资源
最近更新 更多