python Numpy 数组操作时报 "shape mismatch: indexing arrays could not be broadcast together with shapes" 错误

python Numpy 数组操作时报 "shape mismatch: indexing arrays could not be broadcast together with shapes" 错误的解决方案

在运行python数组操作时,报”indexing arrays could not be broadcast together with shapes“错误,原代码如下:

# -*- coding: utf-8 -*-
"""
Created on Wed Oct 16 22:21:54 2019
@author: 湾仔码头
"""
import numpy as np
arr = np.array(((8.5,6,4.1,2,0.7),(1.5,3,5.4,7.3,9),
                 (3.2,3,3.8,3,3),(11.2,13.4,15.6,17.8,19)))
print('二维数组:\n',arr)

#第一行、最后一行和第一列、第三列、第四列构成的数组
print(arr[[0,-1],[0,2,3]])

一运行就报错
python Numpy 数组操作时报

报错信息如下:
报错信息

是因为所选索引形状不匹配:索引数组无法与该形状一起广播。
当访问numpy多维数组时,用于索引的数组需要具有相同的形状(行和列)。numpy将有可能去广播,所以,若要为了实现不同维度的选择,可分两步对数组进行选择。
例如我需要选择第1行和最后一行的第1,3,4列时,先选择行,再选择列。
先读取数组 arr 的第一行和最后一行,保存到 temp ,然后再筛选相应的列即可。


# -*- coding: utf-8 -*-
"""
Created on Wed Oct 16 22:21:54 2019
@author: 湾仔码头
"""
import numpy as np
arr = np.array(((8.5,6,4.1,2,0.7),(1.5,3,5.4,7.3,9),
                 (3.2,3,3.8,3,3),(11.2,13.4,15.6,17.8,19)))
print('二维数组:\n',arr)

#第一行、最后一行和第一列、第三列、第四列构成的数组
#print(arr[[0,-1],[0,2,3]])

#选对应的行
temp=arr[[0,-1],:]

#选对应的列
temp=temp[:,[0,2,3]]

print(temp)

运行结果:
python Numpy 数组操作时报
成功筛选出所需数据。

python Numpy 数组操作时报

你可能感兴趣的:(python)