【问题标题】:np_r function with two values具有两个值的 np_r 函数
【发布时间】:2022-11-21 05:58:27
【问题描述】:

我找到了以下代码:

x=0.3*np.random.randn(100,2)
x_train=np.r_[x+2,x-2]

在第一种情况下,x 是一个 100 行和两列的数组,格式为列表列表,如我所见。在这种情况下,当我使用 size 时,它​​返回 200。但是,在 x_train 部分,它使用的是 np.r_。据我所知,这条指令用于连接数组,所以当我再次运行 size 时,它​​返回 400。但是,我无法了解 x+2x-2 在这种情况下执行的操作。比如,为什么第一种情况是加2,另一种情况是减2?

我已经阅读了文档,但仍然没有任何线索。

【问题讨论】:

  • 看起来它只是用两侧的 +2 和 -2 填充 x。不过,还需要更多背景信息。
  • @Little,只需简化代码即可:x = np.arange(10); np.r_[x+2,x-2]。然后用x = np.arange(10); x.shape= (5,2) ; np.r_[x+2,x-2]。连接将变得更加清晰。
  • 谢谢@Demi-Lune,如果你能把你的评论作为答案就太好了。
  • 我的评论只是为了帮助您澄清问题(您是否努力理解连接?您是否想知道 +2 -2 是否移动了数组或将值更改为 +2 -2?...)。 MRVE 的优点:您通常会自己找到答案 :-)

标签: python numpy


【解决方案1】:

linked scikit 展示了如何在二维中找到两个单独的类。您询问的代码为这两个单独的类生成随机 x&y 坐标数据

np.random.randn的目的是生成100个正态分布的随机x和y坐标对(即x是一个100x2的矩阵)。旁注,.3 乘数可能用于降低更紧密集群的标准偏差。

通过将 2 添加到 x(即,将值 2 添加到 x 中的每个元素),他们创建了一组紧密分布在 (2,2) 周围的 x 和 y 坐标,并通过从 x 中减去 2,他们创建了一组散布在 (-2,-2) 周围的 x 和 y 坐标。

np.r_ ,在这种情况下,与使用 np.concatenate((x-2,x+2),0) 相同,它创建一个 200x2 数组,在一个矩阵中有 100 个 x 和 y 点的观察值散布在 (2,2) 周围,100 个散布在 (-2,-2) 周围

【讨论】:

  • np.r_使用np.concatenate,实际上速度较慢,因为它增加了一个函数解释层。 np.r_ 最常在参数为切片时使用。在这个例子中,我认为它的使用只是一种风格偏好。
  • @hpaulj 感谢您的建议,我删除了答案中的误导性陈述并消除了我自己的误解。包括link到相关问题以供参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
相关资源
最近更新 更多