[英]Need to iterate through each column and find max and min
import numpy as np
x = np.loadtxt('xdata.txt', dtype=float)
y = np.loadtxt('ydata.txt', dtype=float)
normalX = []
normalY = []
for column in x:
i = 0
while i <=17:
xmax = max(column[i])
xmin = min(column[i])
normalx = (?-xmin)/(xmax-xmin)
normalX.append(normalx)
i += 1
else:
break
我有一個148 x 17的矩陣,要導入,並且我想對數據進行規范化。 我試圖遍歷每一列並找到最大值和最小值,但是到目前為止,我的代碼導致“ TypeError:'numpy.float64'對象不可迭代”。 還應該怎么辦? 如果我想讓它成為列中的元素。
而不是一個大的148x17矩陣,請放一個4x4。
1.61 125 13 933.57
1.95 135 29 1357.77
1.91 135 28 1728
2.2 137 46 1828.05
第一列的最大值為2.2,最小值= 1.61,依此類推。
在您的代碼中,您首先訪問for columns in x
這將導致columns
成為x中的row
,然后在for循環中,您嘗試訪問columns[i]
,這將返回該行中i位置的元素。
您可以使用np.amax(x, axis=0)
來獲取每一列的最大值,這將反過來返回每一列的最大值列表。
同樣,您也可以使用np.amin(x, axis=0)
。
另一個問題是,如果您的矩陣的大小為148x17
,則在while
循環中,應僅檢查直到i<17
而不是i<=17
。 您也可以將enumerate(column)
與for
循環一起使用,語法將是- for i, val in enumerate(column)
。
另外,我猜您需要對所有值進行規范化,因此您需要在第一個for循環內創建一個列表,並繼續插入該列表,然后最后將該列表添加到normalX
。
示例代碼-
xmax = np.amax(x, axis=0)
xmin = np.amin(x, axis=0)
for column in x:
tnormalX = []
for i, val in enumerate(column):
normalx = (val-xmin[i])/(xmax[i]-xmin[i])
tnormalX.append(normalx)
i += 1
normalX.append(tnormalX)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.