如何将对象元素的NumPy数组编码为ASCII?

wz1wpwve  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(115)

假设我有四个不同数据类型的列表。我也有一个二维矩阵。我想把它们按列合并。
例如,在下面的源代码中:

  1. train_x_111 == ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
  2. train_y_111 == ['abcd', 'bcde', 'cdef', 'defg', 'efgh', 'fghi', 'ghij', 'hijk', 'ijkl', 'jklm']
  3. train_z_111 == [[0.0, 0.1, 0.2, 0.3],
  4. [0.1, 0.2, 0.3, 0.4],
  5. [0.2, 0.3, 0.4, 0.5],
  6. [0.3, 0.4, 0.5, 0.6],
  7. [0.4, 0.5, 0.6, 0.7],
  8. [0.5, 0.6, 0.7, 0.8],
  9. [0.6, 0.7, 0.8, 0.9],
  10. [ 0.7, 0.8, 0.9, 1.0],
  11. [0.8, 0.9, 1.0, 1.1],
  12. [0.9, 1.0, 1.1, 1.2]]

字符串
我希望在文本文件中输出以下内容:

源码.py

  1. if __name__ == "__main__":
  2. train_x_111, train_y_111, train_z_111 = load_data() # load_data() returns three TF tensors
  3. features_data_int_2d = np.array(train_x_111, dtype=int)
  4. sum_int_1d = np.sum(features_data_int_2d, axis=1)
  5. sum_int_1d = sum_int_1d.reshape(-1, 1)
  6. sum_data_1d_obj = sum_int_1d.astype(np.object_)
  7. features_data_2d_obj = np.array(train_x_111, dtype=np.object_)
  8. classes_data_1d_obj = np.array(train_y_111, dtype=np.object_)
  9. classes_data_1d_obj = classes_data_1d_obj.reshape(10,1)
  10. classes_string_1d_obj = np.array(train_z_111, dtype=np.object_)
  11. classes_string_1d_obj = classes_string_1d_obj.reshape(10, 1)
  12. sum_matrix = np.concatenate((sum_data_1d_obj, classes_data_1d_obj), axis=-1)
  13. sum_matrix = np.concatenate((sum_matrix, classes_string_1d_obj), axis=-1)
  14. sum_matrix = np.concatenate((sum_matrix, features_data_int_2d), axis=-1)
  15. sum_matrix = sum_matrix.encode('ascii')
  16. print(sum_matrix)
  17. np.savetxt("my_file.txt", sum_matrix, fmt='%s', delimiter='\t')

错误输出

  1. C:\ProgramData\Miniconda3\python.exe C:/Users/pc/source/repos/my_project/data_hashing.py
  2. Traceback (most recent call last):
  3. File "C:\Users\pc\source\repos\my_project\data_hashing.py", line 151, in <module>
  4. sum_matrix = sum_matrix.encode('ascii')
  5. AttributeError: 'numpy.ndarray' object has no attribute 'encode'
  6. Process finished with exit code 1


如何将对象元素的NumPy数组编码为ASCII?

ckocjqey

ckocjqey1#

我通过添加以下行解决了这个问题

  1. sum_matrix = sum_matrix.astype('U')

字符串
代替

  1. sum_matrix = sum_matrix.encode('ascii')

zxlwwiss

zxlwwiss2#

.encode('ascii ')只对字符串有效,您应该将有问题的行替换为:

  1. newArray = []
  2. for i in range(len(sum_matrix)):
  3. newLine = []
  4. for j in range(len(sum_matrix[0])):
  5. newLine.append(str(sum_matrix[i][j]).encode('ascii'))
  6. newArray.append(newLine)
  7. sum_matrix = np.array(newArray)

字符串
这基本上是通过你的数组和编码每个元素的输入,它都回到一个数组。可能有一种方法可以对encode函数进行向量化,但我不知道如何使用它。

相关问题