如何对Numpy数组进行垂直切片?3200×3200数组切片异常求助
解决Numpy数组垂直切片(取列)的索引问题
你遇到的问题核心是Numpy多维数组的索引逻辑和Python普通列表不一样:
array[:][x]并不是取第x列:array[:]返回的是原数组的完整视图/副本,相当于没做行筛选,之后的[x]是取第x行,所以和array[x][:]结果完全一致,都是水平切片。- 正确的垂直切片(取第x列)写法是
array[:, x]:Numpy用逗号分隔不同维度,第一个维度是行,:表示取所有行;第二个维度是列,x表示取第x列,这样就能拿到指定x坐标对应的所有值。
举个简单例子验证:
import numpy as np # 创建3x3的测试数组 test_arr = np.array([[0,1,2], [3,4,5], [6,7,8]]) # 错误取法:得到第1行 print(test_arr[:][1]) # 输出 [3 4 5] # 正确取法:得到第1列 print(test_arr[:, 1]) # 输出 [1 4 7]
回到你的场景,直接用array[:, x]就能拿到想要的垂直切片,绘图时直接传入即可:
import matplotlib.pyplot as plt # 假设x是你要取的列索引 vertical_slice = array[:, x] plt.plot(vertical_slice) plt.show()
至于你提到转置后问题仍存在,是因为转置后原列变成了行,这时候应该用array_transposed[x, :]取原列,但显然直接用[:,x]处理原数组更高效直观。
内容的提问来源于stack exchange,提问作者Mormel
相关产品推荐
相关产品推荐

