簡體   English   中英

如何在Python中切片數組的數組

[英]How to slice an array of arrays in Python

我正在嘗試在python上編寫自己的機器學習腳本(我知道有相應的庫,但這純粹是出於樂趣-我正在學習Python)。 我有以下數組;

[array([[[  5,   5,   5, 255],
    [  6,   6,   6, 255],
    [  6,   6,   6, 255],
    ..., 
    [ 12,  12,  12, 255],
    [ 10,  10,  10, 255],
    [ 10,  10,  10, 255]],

   [[  8,   8,   8, 255],
    [ 10,  10,  10, 255],
    [ 14,  14,  14, 255],
    ..., 
    [ 15,  15,  15, 255],
    [ 13,  13,  13, 255],
    [ 13,  13,  13, 255]],

這樣持續了一段時間。 我使用以下代碼得到了這個數組:

imagesList = listdir("someaddress")
loadedImages = []
for image in imagesList:
    #img = PImage.open()
    loadedImages.append(misc.imread("someaddress" + image))

我的邏輯是,我想讀取圖像文件中的像素值數組,以用於圖像分類問題。 從上面的數據可以看出,圖像是灰度的。 我想從此數據中刪除一個尺寸,並對每個像素只有一個值(例如[[[[5],[6],[6],[12] ...)255只是alpha值(我不在乎),我知道這是我需要使用的數組拼接,但是我不知道如何將其應用於此問題。

我試過了; loadedImages [:,1]

我收到以下錯誤;

TypeError: list indices must be integers, not tuple

我真正想要的結果如下

[array([[  5,
  6,
  6,
..., 
 12,
 10,
 10],

 [  8,
   10,
   14,
    ..., 
   15,
   13,
   13,

只需使用numpy,您就可以做您想做的擴展切片:

import numpy as np
a = np.array([[  5,   5,   5, 255],
 [  6,   6,   6, 255],
 [  6,   6,   6, 255]])
# first column:
print(a[:, 0])

在此示例中, :表示數組的所有行,而0表示第一列

您是否嘗試過刪除拼接上的逗號,例如loadedimages [:1]? 對於此數組arr = [ 5, 5, 5, 255] ,要刪除255,可以執行arr = arr[:3] 對於多維數組,您可以根據需要嵌套for循環,以便可以遍歷各個數組。 例如

main_array = [[  5,   5,   5, 255],
              [  6,   6,   6, 255],
              [  6,   6,   6, 255]]

for sub_array in main_array:
  spliced_array = sub_array[:3]
  print spliced_array

將產生

[5, 5, 5]
[6, 6, 6]
[6, 6, 6]

另外,在Python中,這種數據結構稱為列表。 這可能是您很難找到有關它的信息的原因。

編輯:您也可以嘗試使用列表推導。 這在python中非常有用。 例如

arr = [[  5,   5,   5, 255],
       [  6,   6,   6, 255],
       [  6,   6,   6, 255]]

filtered_arr = [a[0] for a in arr]
filtered_arr
>>>[5,6,6]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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