import numpy as np
a =np.array([[0,1,2,3],
[4,5,6,7],
[8,9,10,11],
[12,13,14,15]])
b = a[1:2,1:2]
print (b)
==》 [[5]]
请问为什么b是二维的数组?
虽然 b 只包含一个元素,但它仍然是二维数组,因为 Numpy 中的数组始终保持其维度。
通过索引操作 a[1:2,1:2] 创建了数组 b,是在原始数组 a 的子集中选择特定的行和列。第一个 [1:2] 表示选择从索引 1(包含)到索引 2(不包含)的行,本例中即 [4, 5, 6, 7],第三个 [1:2] 用于选择列,在本例中即 5。通过组合行和列的索引操作,得到的 b 数组是原始数组 a 的一个子集,即二维数组 [[5]]
楼主还暂不明确
问题解答:
针对该问题,可以直接利用Numpy数组切片的方法,如下所示:
import numpy as np
b = np.array([[1,2,3],[4,5,6],[7,8,9]]) # 二维数组
a = b[:,0] # 提取第一列,即一维数组
print(a)
输出结果为:[1 4 7]
解释说明:切片方式b[:,0]表示提取数组b中所有行的第0列数据,即提取第一列数据。之所以出现二维数组,是因为切片本身返回的是一个数组,如果只需要其中一维数据,可以使用上述方式继续切片提取即可。
因为没有找到该问题的具体数据和问题场景,因此以上代码仅供参考,如果实际问题不符合该方案,还需具体分析具体问题。
参考资料: