Конвертировать массив 3d numpy в формат данных - PullRequest
1 голос
/ 27 апреля 2020

У меня есть набор из 1000 изображений размером 100x100 пикселей, и я хочу преобразовать свой массив numpy в кадр данных, где первый канал массива numpy находится в первых 100 столбцах, а второй канал в следующих 100 колонны и тд. Например:

мой массив

import numpy as np

my_images=np.random.uniform(0,1,(1000,100,100,3))
my_images[0].shape
(100, 100, 3)

Что я хочу:

#           channel red         chanel green        channel blue
           r1   r2 ... r100   g1   g2 ... g100   b1   b2 ... b100
image0    ...
image1    ...
...
image99   ...

Как я могу это сделать?

Спасибо

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

В зависимости от того, в каком порядке вы хотите «сгладить» каждый цвет, вы можете сделать:

import numpy as np
import pandas as pd

N = 1000
d = 100
ims = np.random.uniform(0, 1, (N, d, d, 3))

cols = [f'r{i}' for i in range(d**2)] + [f'g{i}' for i in range(d**2)] + [f'b{i}' for i in range(d**2)]

df = pd.DataFrame(data = np.swapaxes(ims, 1,3).reshape(N, -1),
                  columns = cols,
                  index = [f'image{i}' for i in range(N)])
df
               r0        r1        r2  ...     b9997     b9998     b9999
image0    0.754808  0.830338  0.352381  ...  0.870754  0.654643  0.579047
image1    0.387347  0.197181  0.253846  ...  0.091151  0.900780  0.555289
image2    0.743756  0.465971  0.269931  ...  0.946937  0.117723  0.497232
image3    0.899940  0.891160  0.701490  ...  0.194214  0.819856  0.485955
image4    0.593754  0.161847  0.342187  ...  0.481527  0.213749  0.978097
          ...       ...       ...  ...       ...       ...       ...
image995  0.693697  0.297598  0.258053  ...  0.971533  0.430261  0.222101
image996  0.818448  0.658862  0.339770  ...  0.613745  0.776705  0.532044
image997  0.376489  0.180131  0.703525  ...  0.933989  0.326170  0.833145
image998  0.757319  0.652464  0.125789  ...  0.675353  0.860467  0.394837
image999  0.021546  0.670330  0.024574  ...  0.617004  0.156939  0.415484

[1000 rows x 30000 columns]
1 голос
/ 27 апреля 2020

Не самое быстрое решение, но оно дает необходимый результат. Кроме того, есть 100 * 100 = 10000 пикселей для каждого канала, а не 100, как вы показали.

import numpy as np
import pandas as pd

my_images=np.random.uniform(0,1,(1000,100,100,3))

nums = my_images.shape[0]
w = 100
h = 100
c = 3

pd.DataFrame(data= [my_images[i].flatten().reshape(w*h*c) for i in range(nums)],    # values
              index = ['img' + str(i) for i in range(nums)],    # 1st column as index
              columns= ['r' + str(i+1) for i in range(100*100)] + ['g'+str(i+1) for i in range(100*100)] + ['b'+str(i+1) for i in range(100*100)] )  # 1st row as the column names
    r1  r2  r3  r4  r5  r6  r7  r8  r9  r10     r11     r12     r13     r14     r15     r16     r17     r18     r19     r20     r21     r22     r23     r24     r25     r26     r27     r28     r29     r30     r31     r32     r33     r34     r35     r36     r37     r38     r39     r40     ...     b9961   b9962   b9963   b9964   b9965   b9966   b9967   b9968   b9969   b9970   b9971   b9972   b9973   b9974   b9975   b9976   b9977   b9978   b9979   b9980   b9981   b9982   b9983   b9984   b9985   b9986   b9987   b9988   b9989   b9990   b9991   b9992   b9993   b9994   b9995   b9996   b9997   b9998   b9999   b10000
img0    0.486932    0.358114    0.378462    0.962743    0.967968    0.858799    0.355605    0.557928    0.180849    0.979154    0.058116    0.287494    0.479971    0.263553    0.881374    0.875206    0.352662    0.038444    0.120535    0.000326    0.978237    0.715863    0.350651    0.136343    0.633519    0.971797    0.194671    0.981690    0.301551    0.738752    0.910106    0.723529    0.567343    0.583138    0.925730    0.885722    0.417114    0.337083    0.140824    0.889483    ...     0.649809    0.513012    0.653982    0.177253    0.188145    0.494424    0.455103    0.024664    0.012357    0.956512    0.873941    0.977735    0.374367    0.101984    0.989629    0.785725    0.839505    0.944744    0.748421    0.781885    0.233788    0.829904    0.907176    0.157434    0.382110    0.460945    0.732198    0.130351    0.607728    0.200979    0.496550    0.272893    0.490625    0.529867    0.975578    0.688915    0.219779    0.253977    0.351022    0.738245
img1    0.045102    0.028449    0.777591    0.575000    0.868562    0.192366    0.925344    0.934355    0.476159    0.336614    0.058352    0.706517    0.700616    0.697568    0.931899    0.298687    0.325758    0.844186    0.975191    0.815392    0.819782    0.942618    0.119667    0.883005    0.125012    0.314823    0.161448    0.790827    0.534900    0.844786    0.975306    0.347407    0.661538    0.098459    0.867604    0.208455    0.729929    0.063040    0.798002    0.976301    ...     0.123317    0.469142    0.022312    0.238848    0.579594    0.233403    0.111962    0.180687    0.929240    0.283651    0.125432    0.484908    0.734587    0.788714    0.675700    0.663587    0.596222    0.216500    0.783715    0.330661    0.703489    0.780786    0.111286    0.804458    0.691808    0.709701    0.874952    0.278902    0.499596    0.863403    0.554768    0.432910    0.189384    0.196691    0.024404    0.492914    0.041698    0.782992    0.330925    0.681564
img2    0.895364    0.736759    0.034967    0.331774    0.179954    0.064767    0.431156    0.345568    0.516664    0.724786    0.283170    0.077229    0.382801    0.734160    0.964772    0.630064    0.304190    0.014286    0.466788    0.624111    0.593372    0.773352    0.018929    0.515174    0.665516    0.614239    0.184120    0.940892    0.520044    0.432633    0.465579    0.458798    0.623848    0.452827    0.442585    0.722681    0.631540    0.109865    0.263037    0.432471    ...     0.344212    0.161572    0.934545    0.761583    0.048125    0.004187    0.532132    0.275795    0.730705    0.714795    0.220308    0.624861    0.518679    0.838271    0.081648    0.528557    0.316329    0.301952    0.647050    0.141154    0.528354    0.733596    0.213516    0.876608    0.399335    0.785443    0.908612    0.977647    0.869134    0.438461    0.477976    0.191026    0.008590    0.734226    0.331556    0.277559    0.358993    0.429474    0.209247    0.741306
img3    0.042249    0.215090    0.609098    0.136100    0.480906    0.270167    0.275241    0.418473    0.119309    0.075258    0.476748    0.151002    0.013587    0.695470    0.062000    0.183760    0.685605    0.224058    0.354772    0.558781    0.801372    0.136810    0.585566    0.468125    0.754648    0.205976    0.204213    0.055228    0.715287    0.069664    0.682018    0.219368    0.629850    0.469663    0.971606    0.445856    0.130807    0.859502    0.395481    0.101970    ...     0.642661    0.627955    0.962984    0.436121    0.226712    0.343389    0.158353    0.032410    0.197190    0.487362    0.649477    0.227321    0.106230    0.635838    0.822605    0.181413    0.134469    0.536877    0.229766    0.014072    0.076003    0.715866    0.962098    0.693023    0.536637    0.628003    0.953686    0.471928    0.969996    0.777448    0.709374    0.043167    0.590571    0.264927    0.034542    0.947914    0.723615    0.555356    0.292524    0.860090
img4    0.342812    0.984872    0.595325    0.560725    0.322496    0.106175    0.623969    0.517042    0.202604    0.899584    0.357242    0.211253    0.336435    0.215450    0.651622    0.296562    0.932716    0.904923    0.832153    0.297773    0.079881    0.898914    0.862357    0.219088    0.874832    0.945539    0.854319    0.141670    0.450833    0.324066    0.157684    0.506456    0.650278    0.104939    0.918043    0.615409    0.487017    0.914478    0.525752    0.532596    ...     0.052621    0.648331    0.289361    0.357715    0.054250    0.827826    0.628299    0.704747    0.777197    0.948778    0.542223    0.111109    0.034345    0.818893    0.180993    0.809252    0.258662    0.440389    0.973193    0.629529    0.722974    0.164910    0.376697    0.417736    0.402239    0.203207    0.352650    0.082466    0.723988    0.192275    0.905494    0.271835    0.148498    0.357596    0.775139    0.631658    0.683252    0.444594    0.562559    0.270776
...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...     ...
img995  0.838085    0.397261    0.846695    0.933139    0.620105    0.532176    0.797445    0.527347    0.239898    0.905126    0.958340    0.044355    0.066412    0.744415    0.909536    0.704189    0.798124    0.971813    0.284309    0.199504    0.707818    0.678898    0.184314    0.265278    0.286230    0.252277    0.698063    0.052999    0.163469    0.568355    0.949519    0.673165    0.845369    0.939780    0.536132    0.943460    0.154108    0.642619    0.215590    0.661864    ...     0.274670    0.237090    0.793010    0.993295    0.594697    0.767856    0.837942    0.237594    0.519923    0.396707    0.094800    0.460319    0.677104    0.054613    0.804510    0.874100    0.120772    0.383306    0.703549    0.015940    0.382384    0.117743    0.412058    0.374512    0.839501    0.533861    0.858508    0.014900    0.127974    0.784746    0.480787    0.754446    0.730582    0.213735    0.493690    0.590700    0.477921    0.767106    0.460363    0.898690
img996  0.171881    0.666083    0.567388    0.534970    0.110068    0.950682    0.738784    0.624271    0.147806    0.285420    0.009684    0.403910    0.345770    0.232941    0.261416    0.620245    0.504229    0.436067    0.822144    0.746396    0.853005    0.843115    0.587636    0.114130    0.502100    0.780388    0.819707    0.332244    0.592359    0.000251    0.156495    0.764803    0.509039    0.220428    0.829552    0.390561    0.074693    0.815926    0.113959    0.118536    ...     0.685953    0.517420    0.152370    0.961478    0.500367    0.779224    0.331803    0.628549    0.399974    0.404072    0.549934    0.142945    0.061841    0.713861    0.842240    0.740575    0.520969    0.094217    0.480275    0.609732    0.324852    0.355591    0.059871    0.571136    0.275547    0.463229    0.573066    0.628505    0.131310    0.916291    0.501336    0.734825    0.550189    0.852415    0.036260    0.163183    0.379861    0.151860    0.587352    0.558592
img997  0.260229    0.027160    0.024845    0.405843    0.153609    0.948280    0.833786    0.443430    0.733487    0.469510    0.492071    0.093200    0.748563    0.443063    0.103739    0.262570    0.326819    0.038774    0.654335    0.505306    0.025019    0.153099    0.495584    0.825881    0.127388    0.579630    0.622424    0.203833    0.264736    0.339902    0.958501    0.130448    0.809757    0.480960    0.456775    0.888074    0.660926    0.866277    0.489128    0.986085    ...     0.629622    0.532311    0.198096    0.512762    0.025338    0.179305    0.564835    0.844087    0.550143    0.044381    0.993802    0.231412    0.231025    0.069339    0.867986    0.877767    0.276351    0.438310    0.931497    0.382128    0.727942    0.755447    0.367368    0.672704    0.846903    0.960334    0.227707    0.921844    0.224192    0.481621    0.273852    0.521445    0.387418    0.594588    0.634387    0.752935    0.966900    0.286578    0.848091    0.761919
img998  0.137022    0.363908    0.840758    0.347840    0.119981    0.367948    0.039828    0.731761    0.959635    0.133150    0.344888    0.328250    0.969160    0.089202    0.044397    0.727128    0.707633    0.459997    0.049261    0.222913    0.586730    0.410247    0.689743    0.954076    0.067321    0.008652    0.250084    0.997298    0.653954    0.036369    0.209113    0.606945    0.375438    0.423460    0.874191    0.960310    0.002205    0.638605    0.722848    0.280049    ...     0.956299    0.122053    0.198945    0.632034    0.103117    0.480278    0.658445    0.703479    0.842846    0.589640    0.150563    0.580881    0.388750    0.084818    0.746425    0.590966    0.751141    0.515122    0.370861    0.233196    0.943156    0.965516    0.463034    0.055458    0.436112    0.722325    0.051160    0.443859    0.505781    0.547766    0.798339    0.890893    0.146561    0.803766    0.721480    0.386739    0.883938    0.182097    0.549544    0.276338
img999  0.744549    0.724202    0.889157    0.177200    0.120874    0.013192    0.432094    0.973115    0.825215    0.568912    0.608280    0.439619    0.067831    0.454721    0.987532    0.509805    0.760051    0.581479    0.331267    0.600631    0.780780    0.117506    0.583506    0.593765    0.976454    0.143185    0.344449    0.330625    0.188884    0.919397    0.623545    0.686960    0.423576    0.173410    0.325512    0.806801    0.492669    0.717346    0.988060    0.079150    ...     0.468972    0.621811    0.315449    0.698777    0.073734    0.252283    0.990783    0.652986    0.778134    0.263407    0.142558    0.558776    0.765833    0.641718    0.934577    0.545056    0.974763    0.392286    0.026937    0.546414    0.040816    0.939266    0.325401    0.760387    0.131496    0.495096    0.711066    0.192676    0.600273    0.266118    0.258884    0.771196    0.902020    0.572795    0.983741    0.886390    0.623550    0.236895    0.498307    0.757591

1000 rows × 30000 columns
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...