gpt4 book ai didi

python - 切片数组返回奇怪的形状

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

假设我在 Ipython 中执行以下操作:

import numpy as np
test = np.zeros([3,2])
test
test.shape
test[:,0]
test[:,0].shape

结果将是:

array([[ 0.,  0.],
[ 0., 0.],
[ 0., 0.]])
(3,2)
array([ 0., 0., 0.])
(3,)

为什么最后的结果不是(3,1)?我有一个解决方法:reshape 命令,但这看起来很愚蠢。

最佳答案

我使用不同的数组进行可视化:

>>> import numpy as np
>>> test = np.arange(6).reshape(3, 2)
>>> test
array([[0, 1],
[2, 3],
[4, 5]])

像这样切片:

>>> test[:,0]
array([0, 2, 4])

告诉 NumPy 保留第一个维度,但只获取第二个维度的第一个元素。根据定义,这会将维度数减少 1。

就像:

>>> test[0, 0]
0

将采用第一维中的第一个元素和第二维中的第一个元素。从而将维数减少 2。

如果您想将第一列作为实际列(不更改维度数),则需要使用切片:

>>> test[:, 0:1]  # remember that the stop is exlusive so this will get the first column only
array([[0],
[2],
[4]])

或类似

>>> test[:, 1:2]  # for the second column
array([[1],
[3],
[5]])

>>> test[0:1, :] # first row
array([[0, 1]])

关于python - 切片数组返回奇怪的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45971533/

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