【问题标题】:Expanding numpy array while updating the values在更新值时扩展 numpy 数组
【发布时间】:2020-04-15 21:39:15
【问题描述】:

我有一个形状为 (1, m) 的 numpy 数组,每个条目 (n) 都是 0-9 范围内的整数。

我想创建一个形状为 (m, 10) 的新矩阵,其中所有条目均为 0,但第 n 列为 1。

例如:

[2, 3, 1] -> [[0, 0, 1, 0, ...], [0, 0, 0, 1, ...], [0, 1, 0, 0, ...]]

我为它写的代码是:

y_values = np.array([[2, 3, 6, 4, 7]])
y = np.zeros((10, y_values.shape[1])) 
for i in range(y_values.shape[1]):
    y[y_values[0][i]][i] = 1

有没有办法可以摆脱for 循环,并提高效率?

【问题讨论】:

标签: python numpy numpy-ndarray


【解决方案1】:

正如您所料,有一种方法可以使用精美的索引。您需要提供两个数组,在每个方向上给出相应的坐标。您已经拥有的列索引。每列对应的行索引就是np.arange(m)

result = np.zeros((m, 10), dtype=np.bool)
result[np.arange(m), y_values[0]] = True

【讨论】:

  • @永军。适当的感谢是支持并最终选择答案
【解决方案2】:

另一种解决方案是(如果您确定所有 0-9 类都将在那里),

df = pd.get_dummies([2, 3, 1, 4]).T

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多