【问题标题】:Define the size of each element as the third dimension/parameter in the shape of the multi-dimensional array in python将每个元素的大小定义为python中多维数组形状中的第三维/参数
【发布时间】:2021-11-05 19:01:48
【问题描述】:

我的数据集看起来像(前 5 个值或我的数据集的头部):

  a     b     c     d
00010 01001 01001 01000
01001 00101 01001 01001
00011 00011 10000 01001
00101 01000 01001 01000
01001 00101 01001 01001

不。样本数=190 所以当我检查数据的形状时,结果是 (193, 4)

我希望我的数据集显示形状:(190, 4, 5) 其中形状中的第三个元素 = 特定列中的值数 = 00011 = 5

我怎样才能做到这一点?

data1 = pd.read_csv(r"F:\my work/binary_bm.csv", dtype=str)
df2 = np.array(data1)
df2
array([['00010', '01001', '01001', ..., '10000', '00110', '00101'],
   ['01001', '00101', '01001', ..., '10000', '00100', '00110'],
   ['00011', '00011', '10000', ..., '01001', '00011', '00011'],
   ...,
   ['01000', '01001', '01000', ..., '10000', '00100', '00110'],
   ['00010', '01001', '01001', ..., '10000', '00101', '00011'],
   ['00110', '00110', '01001', ..., '10000', '00101', '00101']],
  dtype=object)
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1335 entries, 0 to 1334
Data columns (total 8 columns):
 #   Column      Non-Null Count  Dtype 
---  ------      --------------  ----- 
 0   a       1335 non-null   object
 1   b       1335 non-null   object
 2   c       1335 non-null   object
 3   d       1335 non-null   object
 4   e       1335 non-null   object
 5   f       1335 non-null   object
 6   g       1335 non-null   object
 7   h       1335 non-null   object
dtypes: object(8)
memory usage: 83.6+ KB

x_train = df1.iloc[:930,:5]
x_test = df1.iloc[930:, :5]
y_train = df1.iloc[:930, 5:]
y_test = df1.iloc[930:, 5:]
x_train.head()
       a      b       c       d       e
1016 00010  01001   01001   01000   00110
445  01001  00101   01001   01001   00110
458  00011  00011   10000   01001   10000
251  00101  01000   01001   01000   00110
980  01001  00101   01001   01001   00110

x_tr = np.array(x_train)
print(x_tr)
[['00010' '01001' '01001' '01000' '00110']
 ['01001' '00101' '01001' '01001' '00110']
 ['00011' '00011' '10000' '01001' '10000']
 ...
 ['00100' '01000' '01001' '01000' '00111']
 ['00101' '01001' '01001' '01000' '00110']
 ['00100' '01000' '01001' '01000' '00111']]

x_tr.shape
(930, 5)

【问题讨论】:

  • 看起来元素是字符串 - 所有 5 个字符长。 list('01011') 产生['0','1','0','1','1'],一个单一字符串的列表。
  • 这里有一堆模糊的陈述,不足以重现你的数据。另外,你有什么尝试来解决这个问题?
  • @hpaulj ,我更新了包含显示数据结构的代码的问题。是的,我必须将我的数据转换为字符串,以便在值的 MSB 中保留零。我想处理我的数据,使形状变为 (950, 5, 5),表示 950 个元素(批量大小/样本数),训练集中有 5 个特征/列,每个特征用 5 位值表示!
  • @MadPhysicist 我已经更新了包含显示数据结构的代码的问题。是的,我必须将我的数据转换为字符串,以便在值的 MSB 中保留零。我想处理我的数据,使形状变为 (950, 5, 5),表示 950 个元素(批量大小/样本数),训练集中有 5 个特征/列,每个特征用 5 位值表示!

标签: python numpy multidimensional-array reshape numpy-ndarray


【解决方案1】:

您可以遍历数组并将每个字符串转换为整数的列表,然后重构数组并重新整形为最终形式。

使用以下示例:

>>> x = np.array([['00010', '01001', '01001', '01000', '00110'],
                  ['01001', '00101', '01001', '01001', '00110'],
                  ['00011', '00011', '10000', '01001', '10000'],
                  ['00100', '01000', '01001', '01000', '00111'],
                  ['00101', '01001', '01001', '01000', '00110'],
                  ['00100', '01000', '01001', '01000', '00111']])

这看起来像:

>>> np.array([int(k) for s in x.flatten() for k in s]).reshape(-1, 5, 5)
array([[[0, 0, 0, 1, 0],
        [0, 1, 0, 0, 1],
        [0, 1, 0, 0, 1],
        [0, 1, 0, 0, 0],
        [0, 0, 1, 1, 0]],

       [[0, 1, 0, 0, 1],
        [0, 0, 1, 0, 1],
        [0, 1, 0, 0, 1],
        [0, 1, 0, 0, 1],
        [0, 0, 1, 1, 0]],

       [[0, 0, 0, 1, 1],
        [0, 0, 0, 1, 1],
        [1, 0, 0, 0, 0],
        [0, 1, 0, 0, 1],
        [1, 0, 0, 0, 0]],

       [[0, 0, 1, 0, 0],
        [0, 1, 0, 0, 0],
        [0, 1, 0, 0, 1],
        [0, 1, 0, 0, 0],
        [0, 0, 1, 1, 1]],

       [[0, 0, 1, 0, 1],
        [0, 1, 0, 0, 1],
        [0, 1, 0, 0, 1],
        [0, 1, 0, 0, 0],
        [0, 0, 1, 1, 0]],

       [[0, 0, 1, 0, 0],
        [0, 1, 0, 0, 0],
        [0, 1, 0, 0, 1],
        [0, 1, 0, 0, 0],
        [0, 0, 1, 1, 1]]])

【讨论】:

  • 非常感谢@Ivan 提供的帮助!
猜你喜欢
  • 1970-01-01
  • 2015-07-08
  • 2021-12-15
  • 2021-10-04
  • 2023-03-30
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多