【问题标题】:Third parameter of np.r_? (numpy)np.r_ 的第三个参数? (麻木)
【发布时间】:2017-03-30 00:16:19
【问题描述】:

我正在查看文档,但仍然无法弄清楚第三个参数的操作方式。

 np.r_['0,2,0', [1,2,3], [4,5,6]]

输出:

array([[1],
       [2],
       [3],
       [4],
       [5],

2)

np.r_['1,2,0', [1,2,3], [4,5,6]]

输出:

array([[1, 4],
       [2, 5],
       [3, 6]])

第一个参数是轴,第二个是维数,第三个根据文档的意思是“哪个轴应该包含小于指定维数的数组的开始”

这里是文档:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.r_.html

谢谢。

【问题讨论】:

  • 我已经回答了很多与np.concatenate 相关的问题,并且几乎从未使用过r_ 的字符串参数。也没见别人用过。学习使用它没有坏处,但不要担心它是否仍然是个谜。
  • 我也从未使用过它,但在另一个我遇到不同问题的线程中,用户将它作为解决方案的一部分。 stackoverflow.com/questions/43102869/…
  • 虽然它可以用于通用连接,但在构建这样的索引时最有用。 index_tricks.py(我认为是它的文件名)中的所有代码都具有指导意义。
  • 在哪里可以找到 index_tricks.py?是文档中给出的示例吗?
  • ..../numpy/lib/index_tricks.py 是完整路径。在 ipython 会话中,我可以通过 np.lib.index_tricks?? 读取文件。

标签: numpy concat


【解决方案1】:

也许一个简单的例子可以解决问题:

b=np.arange(3)
np.r_['0,2,0', b, b]
# array([[0],
#        [1],
#        [2],
#        [0],
#        [1],
#        [2]])
np.r_['0,2,1', b, b]
# array([[0, 1, 2],
#        [0, 1, 2]])

我们将b 与自身连接一维数组。第二个数字指定它应该在按照第一个数字指定的堆叠在自身上之前进行 2d。现在有两种方法可以将形状 (3,) 数组设为 2d:将其设为 (3, 1)(第一个示例)或设为 (1, 3)(第二个示例)。第三个数字指定第一个原始维度(即 3)在 2d 数组中的位置。

【讨论】:

  • 所以一个0相当于使用b[:,None],1相当于使用b[None,:]
  • 谢谢。 Now there are two ways to make a shape (3,) array 2d: either make it (3, 1) (first example) or make it (1, 3) (second example)这句话确实有助于澄清事情。很高兴您将其包含在您的解释中。
【解决方案2】:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.r_.html 负整数指定升级后的数组的最后一维应该放置在新形状元组中的哪个位置,因此默认值为“-1”。

这句话是什么意思?

np.r_['0,2,-5', [1,2,3],[4,5,6] ] # ValueError: all the input array dimensions except for the concatenation axis must match exactly
np.r_['0,2,-6', [1,2,3],[4,5,6] ] # array([[1],[2],[3],[4],[5],[6]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多