| 
 | 
 
 
发表于 2024-3-13 14:51:53
|
显示全部楼层
 
 
 
 
 
当使用`np.array`将预测结果、真实值和输入数据转换为数组时,有可能会导致维度的错乱。这是因为NumPy数组可以具有不同的形状(即不同的维度),而在进行操作时,维度必须匹配,否则就会出现错误。 
 
让我们来看一个例子: 
 
- import numpy as np
 
  
- # 预测结果
 
 - predictions = [1, 2, 3]
 
  
- # 真实值
 
 - labels = [[0, 1], [1, 0], [1, 1]]
 
  
- # 输入数据
 
 - inputs = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
 
  
- # 转换为数组
 
 - predictions_array = np.array(predictions)
 
 - labels_array = np.array(labels)
 
 - inputs_array = np.array(inputs)
 
  
- print(predictions_array)
 
 - print(predictions_array.shape)
 
 - print(labels_array)
 
 - print(labels_array.shape)
 
 - print(inputs_array)
 
 - print(inputs_array.shape)
 
  复制代码 
 
输出结果如下: 
- [1 2 3]
 
 - (3,)
 
 - [[0 1]
 
 -  [1 0]
 
 -  [1 1]]
 
 - (3, 2)
 
 - [[0 1 2]
 
 -  [3 4 5]
 
 -  [6 7 8]]
 
 - (3, 3)
 
  复制代码 
 
可以看到,`predictions`被成功转换成了一维数组`(3,)`,`labels`被成功转换成了二维数组`(3, 2)`,`inputs`被成功转换成了二维数组`(3, 3)`。 
 
但如果我们在转换之前将数据的结构搞乱,就会导致维度的错乱。比如: 
 
- import numpy as np
 
  
- # 预测结果
 
 - predictions = [[1, 2], [3, 4], [5, 6]]
 
  
- # 真实值
 
 - labels = [0, 1, 2]
 
  
- # 输入数据
 
 - inputs = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
 
  
- # 转换为数组
 
 - predictions_array = np.array(predictions)
 
 - labels_array = np.array(labels)
 
 - inputs_array = np.array(inputs)
 
  
- print(predictions_array)
 
 - print(predictions_array.shape)
 
 - print(labels_array)
 
 - print(labels_array.shape)
 
 - print(inputs_array)
 
 - print(inputs_array.shape)
 
  复制代码 
 
输出结果如下: 
- [[1 2]
 
 -  [3 4]
 
 -  [5 6]]
 
 - (3, 2)
 
 - [0 1 2]
 
 - (3,)
 
 - [[0 1 2]
 
 -  [3 4 5]
 
 -  [6 7 8]]
 
 - (3, 3)
 
  复制代码 
 
可以看到,`labels`在转换为数组时由于原本是一维列表,所以被转换成了一维数组`(3,)`,维度保持不变。这就导致后续操作中可能会出现错误,因为预测结果和输入数据的维度与真实值的维度不匹配。 
 
因此,我们在使用`np.array`将数据转换为数组时,要确保数据的结构和维度是一致的,以免导致维度的错乱。 
 
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |   
 
 
 
 |