簡體   English   中英

需要遍歷每列並找到最大值和最小值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM