在运行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]])
是因为所选索引形状不匹配:索引数组无法与该形状一起广播。
当访问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)