Terence888 发表于 2024-11-7 17:58:30

不均匀数组如何转化成一维series

pre = torch.nn.functional.softmax(torch.tensor(np.array(pre_valid).flatten(),dtype=torch.float32),dim=-1)
result = np.argmax(pre,axis=1)
上述代码报错---------------------------------------------------------------------------
ValueError                              Traceback (most recent call last)
Cell In, line 1
----> 1 pre = torch.nn.functional.softmax(torch.tensor(np.array(pre_valid).flatten(),dtype=torch.float32),dim=-1)
      2 result = np.argmax(pre,axis=1)

ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (229,) + inhomogeneous part.
其中pre_valid是形状为(229,2)的列表

FishC 发表于 2024-11-7 18:20:40

根据错误信息,`pre_valid` 是一个形状为 (229, 2) 的列表,其中包含了不规则形状的数据。要解决此问题并将其转换为一维的 `Series`,你可以执行以下步骤:

1. 将 `pre_valid` 转换为 NumPy 数组并展平为一维。
2. 使用 PyTorch 的 `softmax` 函数来处理扁平化后的一维数据。
3. 使用 `np.argmax` 找出最大值对应的索引。

以下是修改后的代码:

import numpy as np
import torch
import pandas as pd

# 将 pre_valid 转为 NumPy 数组并展平
pre_valid = np.array(pre_valid, dtype=object)
flattened = np.concatenate(pre_valid).astype(np.float32)

# 计算 softmax
pre = torch.nn.functional.softmax(torch.tensor(flattened), dim=-1)

# 找出最大值对应的索引
result = np.argmax(pre.numpy())

# 可选:将结果转换为 pandas Series
series_result = pd.Series(pre.numpy())

print(series_result)

关键是先将 `pre_valid` 整合为一维数组,然后再应用 `softmax` 和 `argmax` 操作。通过 `numpy.concatenate` 方法,我们能够展开不规则形状的数据。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 不均匀数组如何转化成一维series