gpt4 book ai didi

python - 将 numpy 切片重新拼凑成原始数组

转载 作者:行者123 更新时间:2023-12-01 02:23:18 25 4
gpt4 key购买 nike

如果你使用像这样的切片来分割 numpy 数组:

假设数据如下: [[ Y X X X....] [Y X X X....]]

X_test = data_test[:, 1:]
y_test = data_test[:, 0]

我认为这会起作用,但我在此过程中找不到文档。

test_assembled = [:, y_test:X_test]

最佳答案

X_test = data_test[:, 1:]
y_test = data_test[:, 0]

X_testy_test的更改将在data_test中看到。因此您无需重新组装它们来传播更改。它们是 View

使用np.concatante(或其衍生物,stackc_等)的程序集将生成一个新数组,具有自己的数据缓冲区。这可能是也可能不是您想要的。

在这种情况下,连接它们的唯一棘手的部分是 X_test 是 2d,而 y_test (用标量索引)是 1d。连接必须考虑到这一点。明确的方法是

y_temp = y_test[:,None]
new_data = np.concatenate((y_temp, X_test), axis=1)

np.column_stackc_ 是可以为您执行 y_temp 步骤的便捷函数。

同样好的方法是构造一个“空白”接收器数组,并使用相同的切片符号复制数组。

new_data = np.zeros_like(data_test)
new_data[:, 1:] = X_test
new_data[:,0] = y_test

事实上,您可以对 data_test 进行该分配,但没有必要这样做。

<小时/>

验证:

In [135]: data_test = np.arange(12).reshape(3,4)
In [136]: data_test
Out[136]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [137]: X_test = data_test[:,1:]
In [139]: y_test = data_test[:,0]
In [140]: y_test
Out[140]: array([0, 4, 8])
In [141]: y_test *= 10
In [142]: data_test
Out[142]:
array([[ 0, 1, 2, 3],
[40, 5, 6, 7],
[80, 9, 10, 11]])
In [143]: np.concatenate((y_test[:,None], X_test), axis=1)
Out[143]:
array([[ 0, 1, 2, 3],
[40, 5, 6, 7],
[80, 9, 10, 11]])
In [144]: np.column_stack((y_test, X_test))
Out[144]:
array([[ 0, 1, 2, 3],
[40, 5, 6, 7],
[80, 9, 10, 11]])
In [145]: new = np.zeros_like(data_test)
In [146]: new[:,1:] = X_test
In [147]: new[:,0] = y_test/10
In [148]: new
Out[148]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])

关于python - 将 numpy 切片重新拼凑成原始数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47721974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com