[英]How to create NxM matrix from numpy array?
我正在研究從 NumPy 數組中形成大約 60 行和 11 列的矩陣。 我研究了幾種方法,但我無法讓它發揮作用。 我嘗試了以下代碼並收到此錯誤,
stats_features_full = np.empty((0, 11))
for ls in range(60):
current_list = ls
print('Entering list {0} for feature extraction'.format(current_list))
stats_features = get_selected_statistics_features(list_values=list[ls])
stats_features_np_shape = np.array(stats_features).shape
print('Statistical Features Extracted from list: ', stats_features)
print('Statistical Features Shape Extracted from list: ', stats_features_np_shape)
stats_features_full = np.concatenate([stats_features_full, np.array(stats_features)], axis=0)
# stats_features_full = np.append(arr=stats_features_full, values=np.array(stats_features), axis=0)
stats_features_full_np_shape = np.array(stats_features_full).shape
print('Statistical Features Extracted from all lists: ', stats_features_full)
print('Statistical Features Shape Extracted from all lists: ', stats_features_full_np_shape)
錯誤信息:
(1)
stats_features_full = np.concatenate([stats_features_full, np.array(stats_features)], axis=0)
File "<__array_function__ internals>", line 6, in concatenate
ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)
(2)
print('Entering list {0} for feature extraction'.format(current_list))
File "<__array_function__ internals>", line 6, in append
return concatenate((arr, values), axis=axis)
File "<__array_function__ internals>", line 6, in concatenate
ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)
有沒有辦法創建一個 60x11 數組?
編輯1:
感謝@Krish,它似乎工作正常。 我還有一個問題,我想將stats_features_full
變量轉換為 pandas dataframe 以便將結果保存為文本文件。 我該如何解決這個問題? 請參閱下面的方法:
########################################################################################################################
########################################################################################################################
############################################### Feature Datasets #######################################################
########################################################################################################################
########################################################################################################################
Stats_DataFrame_Feature = stats_features_full
Stats_DataFrame_Feature_Data_list = list(Stats_DataFrame_Feature)
# print('Statistical DataFrame Featureset list: ', Stats_DataFrame_Feature_Data_list)
Stats_DataFrame_Feature_Data_list_shape = np.array(Stats_DataFrame_Feature_Data_list).shape
Stats_DataFrame_Feature_Data_list_shape_1 = np.array(Stats_DataFrame_Feature_Data_list).shape
print('Statistical DataFrame Featureset list shape: ', Stats_DataFrame_Feature_Data_list_shape)
print('Statistical DataFrame Featureset list shape: ', Stats_DataFrame_Feature_Data_list_shape_1[0])
for Stat_row in range(60):
StatsData.append(Stats_DataFrame_Feature[0:Stats_DataFrame_Feature_Data_list_shape[0]])
StatsData_np = np.array(StatsData)
with open('filepath\dataset.txt', 'w') as out_file:
for i in range(60):
print('Opened file number: {0}'.format(i))
out_string = ""
out_string += pd.DataFrame(data=StatsData_np).to_string()
out_file.write(out_string)
break
# break
# break
Stats_DataFrame_Feature_Matrix = StatsData
print('Final Saved Statistical Feature Dataset file: ', Stats_DataFrame_Feature_Matrix)
print('Shape Final Saved Statistical Feature Dataset file: ', np.array(Stats_DataFrame_Feature_Matrix).shape)
我的錯誤信息:
out_string += pd.DataFrame(data=StatsData_np).to_string()
mgr = init_ndarray(data, index, columns, dtype=dtype, copy=copy)
values = prep_ndarray(values, copy=copy)
raise ValueError("Must pass 2-d input")
ValueError: Must pass 2-d input
編輯2:
我設法通過更改以下幾行使其工作,
StatsData.append(Stats_DataFrame_Feature[0:Stats_DataFrame_Feature_Data_list_shape[1]])
StatsData_np = np.array(StatsData[Stat_row])
但是,我讓保存的文件遵循尺寸(60、11、11)。 這是為什么?
編輯3:
假設我創建了 6 個字典鍵,每個鍵有 10 個列表。 我想實現同樣的事情,但我不斷收到索引錯誤。
for key in range(0, 6, 1):
list_key = np.array(dict_list[key])
print('Key value: {0}'.format(key))
arr_list = []
for list_num in range(0, 10, 1):
list_val_num = np.array(list(list_key[:, list_num][0]))
# stats_features = get_statistics_features_final(list_values=list_val_num)
stats_features = get_selected_statistics_features(list_values=list_val_num)
stats_features_np_shape = np.array(stats_features).shape
print('Statistical Features Extracted from list: ', stats_features)
print('Statistical Features Shape Extracted from list: ', stats_features_np_shape)
arr_list += [stats_features]
f_arr_list += arr_list
stats_features_full = np.vstack(f_arr_list)
stats_features_full_np_shape = np.array(stats_features_full).shape
print('Statistical Features Shape Extracted from all lists: ', stats_features_full_np_shape)
錯誤信息:
IndexError: index 1 is out of bounds for axis 1 with size 1
我使用np.random.rand(11)
代替數據:
import numpy as np
arr_list = []
for ls in range(60):
stats_features_np_shape = np.random.rand(11)
arr_list += [stats_features_np_shape]
stats_features_full = np.vstack(arr_list)
print(stats_features_full)
不在這里的關鍵是stats_features_np_shape
應該具有(11)
(或任何整數)的形狀,並且stats_features_full
最好在循環之外生成。
感謝@Krish 和@hpaulj,我設法解決了這個問題。 在下面找到完整的代碼:
########################################################################################################################
########################################################################################################################
############################################ Feature Extraction ########################################################
########################################################################################################################
########################################################################################################################
arr_list = []
for ls in range(60):
current_list = ls
print('Entering list {0} for feature extraction'.format(current_list))
stats_features = get_selected_statistics_features(list_values=list[ls])
arr_list += [stats_features]
stats_features_np_shape = np.array(stats_features).shape
print('Statistical Features Extracted from list: ', stats_features)
print('Statistical Features Shape Extracted from list: ', stats_features_np_shape)
stats_features_full = np.vstack(arr_list)
stats_features_full_np_shape = np.array(stats_features_full).shape
print('Statistical Features Shape Extracted from all lists: ', stats_features_full_np_shape)
########################################################################################################################
########################################################################################################################
############################################### Feature Datasets #######################################################
########################################################################################################################
########################################################################################################################
Stats_DataFrame_Feature = stats_features_full
Stats_DataFrame_Feature_Data_list = list(Stats_DataFrame_Feature)
print('Statistical DataFrame Featureset list: ', Stats_DataFrame_Feature_Data_list)
Stats_DataFrame_Feature_Data_list_shape = np.array(Stats_DataFrame_Feature_Data_list).shape
print('Statistical DataFrame Featureset list shape: ', Stats_DataFrame_Feature_Data_list_shape)
for Stat_row in range(60):
StatsData.append(Stats_DataFrame_Feature[0:Stats_DataFrame_Feature_Data_list_shape[0]])
Stats_DataFrame_Feature_Data_list_list = Stats_DataFrame_Feature_Data_list[0:Stats_DataFrame_Feature_Data_list_shape[0]]
StatsData_np = np.array(StatsData[Stat_row])
with open('filepath\list dataset.txt', 'w') as out_file:
for i in range(60):
print('Opened file number: {0}'.format(i))
out_string = ""
out_string += pd.DataFrame(data=StatsData_np).to_string()
out_file.write(out_string)
break
Stats_DataFrame_Feature_Matrix = StatsData
print('Shape Final Saved Statistical Feature Dataset file: ', np.array(Stats_DataFrame_Feature_Matrix).shape)
StatsData_np = np.array(StatsData)
column_no = 0
StatsData = []
stats_features_full = np.array([])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.