简体   繁体   English

np.interp 在脚本中失败 - 但在独立测试中没有? (ValueError:object 所需数组的深度太小)

[英]np.interp fails in script - but not in standalone test? (ValueError: object of too small depth for desired array)

I have a Python3 script that I run on Raspbian:我有一个在 Raspbian 上运行的 Python3 脚本:

$ python3 --version
Python 3.5.3

$ python3 -c 'import numpy; print(numpy.__version__)'
1.12.1

So, this script is kind of long, but it has this section:所以,这个脚本有点长,但它包含以下部分:

...
      if DO_LOOKUP==True:
        print("my_X_point {} this_X_data.ndim/.shape/.size {}/{}/{} this_Y_data.ndim/.shape/.size {}/{}/{}".format(my_X_point, this_X_data.ndim, this_X_data.shape, this_X_data.size, this_Y_data.ndim, this_Y_data.shape, this_Y_data.size))
        my_Y_point = np.interp(my_X_point, this_X_data, this_Y_data)
      else:
...

So, when I run the script, the code crashes at the np.interp line with:因此,当我运行脚本时,代码在np.interp行崩溃:

...
my_X_point 0.03 this_X_data.ndim/.shape/.size 1/(821,)/821 this_Y_data.ndim/.shape/.size 1/(821,)/821
Traceback (most recent call last):
  File "my_logger_script.py", line 698, in run
  ...
  File "/home/pi/lib_logger_script.py", line 1145, in check_logged_points
    my_Y_point = np.interp(my_X_point, this_X_data, this_Y_data)
  File "/usr/lib/python3/dist-packages/numpy/lib/function_base.py", line 1881, in interp
    return interp_func(x, xp, fp, left, right)
ValueError: object of too small depth for desired array

Ok, so I find Numpy: ValueError: object of too small depth for desired array which seemingly talks about this problem - so I think: "OK, let me save those two numpy arrays ( this_X_data , this_Y_data ) to file, then open a standalone instance of Python, and load them there, so I can see what the problem is".好吧,所以我找到Numpy: ValueError: object of too small depth for desired array这似乎在谈论这个问题 - 所以我想:“好吧,让我把这两个 numpy arrays ( this_X_data , this_Y_data ) 保存到文件中,然后打开一个独立的Python 的实例,并将它们加载到那里,这样我就可以看到问题所在”。 So, I do this hack:所以,我做了这个 hack:

...
      if DO_LOOKUP==True:
        print("my_X_point {} this_X_data.ndim/.shape/.size {}/{}/{} this_Y_data.ndim/.shape/.size {}/{}/{}".format(my_X_point, this_X_data.ndim, this_X_data.shape, this_X_data.size, this_Y_data.ndim, this_Y_data.shape, this_Y_data.size))
        # debug save of these arrays
        with open('this_X_data.npy', 'wb') as f:
          np.save(f, this_X_data)
        with open('this_Y_data.npy', 'wb') as f:
          np.save(f, this_Y_data)
        my_Y_point = np.interp(my_X_point, this_X_data, this_Y_data)
      else:
...

Right - so the code crashes at the exact same line, but now I have this_X_data.npy and this_Y_data.npy files.正确 - 所以代码在完全相同的行崩溃,但现在我有this_X_data.npythis_Y_data.npy文件。

So I start a terminal Python3 session, and do this:所以我启动了一个终端 Python3 session,然后执行以下操作:

$ python3
Python 3.5.3 (default, Jul  9 2020, 13:00:10)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> with open('this_X_data.npy', 'rb') as f: this_X_data = np.load(f)
...
>>> with open('this_Y_data.npy', 'rb') as f: this_Y_data = np.load(f)
...
>>> my_X_point=0.03
>>> np.interp(my_X_point, this_X_data, this_Y_data)
3.0728648

WHAT?, So, we have the exactly same Python, exactly same numpy, and the very same data - and yet, here in a session, the np.interp succeeds - but when it runs in a script, it fails with ValueError: object of too small depth for desired array ??!!什么?,所以,我们有完全相同的 Python、完全相同的 numpy完全相同的数据 - 然而,在 session 中, np.interp成功 - 但是当它在脚本中运行时,它失败并出现ValueError: object of too small depth for desired array ??!!

Can anyone explain me what is going on, and how is this possible?谁能向我解释发生了什么,这怎么可能? And even more importantly, how can I get the np.interp in the code to work just as well as in the terminal session - without crashing?更重要的是,我怎样才能让代码中的np.interp像在终端 session 中一样工作 - 而不会崩溃?


PS: You'd probably want to see the.npy files as well; PS:您可能还想查看 .npy 文件; these are binary, and Stack Overflow does not support file upload ;这些是二进制文件,Stack Overflow 不支持文件上传 but they are kinda smallish - and I think binary-to-text encoding will work here.但它们有点小——我认为二进制到文本的编码在这里会起作用。

So, I obtained an ascii85 string representation of the files with:因此,我获得了文件的 ascii85 字符串表示形式:

python3 -c 'import sys,base64; f=open(sys.argv[1], "rb"); print(base64.a85encode(f.read()).decode("ascii")); f.close()' this_X_data.npy
python3 -c 'import sys,base64; f=open(sys.argv[1], "rb"); print(base64.a85encode(f.read()).decode("ascii")); f.close()' this_Y_data.npy

... and I'm pasting them here: ...我将它们粘贴在这里:

this_X_data.npy.a85 : this_X_data.npy.a85

P>5+P:g!f!7K@c_A7]glE[Nmj-Tl!#-S-AfAoD^3Ea`imDfTB"E[Nmj7U^+SALnrOF(f!$ALBM]-o`t:/1E+mI39XT+<VdL+<Vd6AnGXeAnI/iAnGXeAnI/ic-4DUbfl/5c-4DUbfl26c-4DUbfl26c-4DUbfl26c-4DUbfl26z!!&0HR[KS3R@01%AnGXeAnI/iz!!&3Ic-4DUbfl26c-4DUbfl57R[KS3R@01%1G^gC1Gb1Yz!!&-Gz!!&0Hc-4DUbfl/51G^gC1Gb4ZR[KS3R@01%z!!&3Iz!!&-GAnGXeAnI2j1G^gC1Gb7[1G^gC1Gb1Yc-4DUbfl)3R[KS3R@01%z!!&-GR[KS3R@01%R[KS3R@01%AnGXeAnI/iz!!&0H1G^gC1Gb.XAnGXeAnI/ic-4DUbfl57z!!&0Hc-4DUbfl57AnGXeAnI/i1G^gC1Gb+WR[KS3R@01%R[KS3R@01%c-4DUbfl26c-4DUbfl/5z!!&-GAnGXeAnI/iz!!&0H1G^gC1Gb.Xz!!&0Hz!!&-GAnGXeAnI5kc-4DUbfl57z!!&*FAnGXeAnI/iR[KS3R@01%AnGXeAnI8lz!!&-Gz!!&-GR[KS3R@07'AnGXeAnI2jAnGXeAnI2j1G^gC1Gb1YR[KS3R@01%z!!&0Hz!!&3IR[KS3R@01%AnGXeAnI2jAnGXeAnI2jAnGXeAnI/iAnGXeAnI8lAnGXeAnI,hR[KS3R@04&R[KS3R@0.$z!!&0Hz!!&0HR[KS3R@04&1G^gC1Gb+W1G^gC1Gb4Zz!!&-GR[KS3R@01%AnGXeAnI/iAnGXeAnI/iR[KS3R@04&AnGXeAnI,hAnGXeAnI5kAnGXeAnI2j1G^gC1Gb.Xz!!&-GAnGXeAnI5k1G^gC1Gb.Xc-4DUbfl26R[KS3R@07'1G^gC1Gb7[AnGXeAnI,hz!!&3Iz!!&*F1G^gC1Gb.Xc-4DUbfl57R[KS3R@04&R[KS3R@01%1G^gC1Gb.XR[KS3R@04&z!!&3IAnGXeAnI/iAnGXeAnI/i1G^gC1Gb4Z1G^gC1Gb1Y1G^gC1Gb1Yz!!&3Ic-4DUbfl88c-4DUbfl26c-4DUbfl261G^gC1Gb=]1G^gC1Gb7[z!!&6Jz!!&<LR[KS3R@0=)1G^gC1Gb@^R[KS3R@0C+c-4DUbflA;R[KS3R@0L.c-4DUbflM?c-4DUbflYCc-4DUbY4ZoR[KS3R@0[3z!!&l\c-4DUbY4itAnGXeB'-$Vz!!',cz!5Pg'AnGXeAu;n!1G^gC1NTrg1G^gC1NU#iAnGXeB'-]iAnGXeAnJhCz!._sOR[KS3R5r;P1G^gC1D@qrR[KS3RJG/nc-4DUbhUT1R[KS3R5re^AnGXeAiA:+AnGXeB'.i4AnGXeB#`^mR[KS3R5*\cR[KS3R??PpR[KS3R5sFpAnGXeAhN@5c-4DUbS9G/z!)W/Lc-4DUbXD"dR[KS3R;MR\R[KS3RAomE1G^gC1B[G;AnGXeApX>=AnGXeB(#U^AnGXeAlJaq1G^gC1VEfSc-4DUbWGtmc-4DUbf0cN1G^gC1Kt&Kc-4DUbk)-*c-4DUbao,+R[KS3R7RcOz!!Wlt1G^gC1Wp7nz!)X:mAnGXeAk3M!AnGXeAk3P"AnGXeAlKF/z!,E96c-4DUb^C3kAnGXeAr@EiR[KS3RALccR[KS3RDB_*c-4DUbi0L*z!"Kr5AnGXeAh4oeAnGXeAm69@R[KS3R=-,Az!4X+9AnGXek&VY1z!$EFMz!6HBLc-4DUb\eUiz!"pMAc-4DU9YDZ9R[KS3R:[^0AnGXejr5U3z!6-<MzJ:&\/AnGXeAg8ZgAnGXek0k\Cz!/;mec-4DUbVpt9c-4DU9^aDqR[KS3)5AZHAnGXek$oo,1G^gC1Ee;7c-4DUbht$;R[KS3)4rKG1G^gCZXb[Rc-4DU9IDJY1G^gCZgKJ3c-4DUbZcbdz5f#->c-4DUbTAQ)1G^gCo7Jb_1G^gCoBS+rAnGXeAkk*HAnGXeVR\HIz5U\ERzJ<huVc-4DU9E?t8AnGXe->GA&c-4DU9\D6fAnGXeVEZq'c-4DUbcEZec-4DU9HH)Wc-4DU9SYMkAnGXeVYW29AnGXek$U,51G^gCo@5cb1G^gCF$_iOc-4DU9Y`VQc-4DUbUtn@AnGXeVQ2^Bc-4DU9GffUc-4DUb`k.RAnGXeAd:C_c-4DU%#$c.1G^gCEr\<fAnGXek&WXMc-4DU9^t51c-4DU9P6LRz_!X?Nc-4DUb[s%(R[KS3g$Lsg1G^gCF(IR$R[KS3)=TjUAnGXe7Pd:pR[KS3R<1\ZAnGXek-I<<c-4DUD"g1[c-4DUCbn@BAnGXe`csd7c-4DU9XmARAnGXe`WAIlAnGXeL-S'jR[KS3\VEL:1G^gC1W_sKR[KS3R1;SLz^fNlgz@$a5Gz!80_)c-4DU9Hlki1G^gCZXuTjAnGXe7^>EIAnGXe7f>_?AnGXeL-%ghAnGXeL5A>aR[KS3H-A]BR[KS3GoB.;c-4DU/7V.7AnGXe`hu9kz+SJ8iAnGXe#!5=?R[KS3=cQ!;c-4DUN7LKac-4DUlm#%dz!-:[rc-4DU9Y<n]1G^gCZO9>i1G^gCo2/(EAnGXeAsu:Vc-4DU9[QEs1G^gCEudk<R[KS3=_^Poc-4DU9Ya7c1G^gCo*n>XAnGXek$(JDc-4DU%'</fc-4DUbQ(=%z!)6-Pz!1uqMR[KS3)>d)mAnGXeAjoEZzJ=K>!c-4DUN:0J+AnGXe-;.*!R[KS3)44/azJF-)sc-4DUbXbMpAnGXe-C.FmR[KS3RIF!;1G^gCo-I3u1G^gC;bp4Tc-4DUXF<u2R[KS3)5^4qAnGXeL=K*cc-4DUD#I0qz^b&DKAnGXeL0%5;z^kP]O1G^gCZa3Loc-4DUm,Cl-z?k-("R[KS3ffW.tz?uAk-1G^gCPFGH8AnGXe#00V,1G^gCPPe<DR[KS3)(SWNc-4DUCfaP#c-4DU9T)h7AnGXeL::)HR[KS3RHIL61G^gC;]A\$1G^gC;b0kQc-4DUXF*u4z+Kna0c-4DUbhQ/_z?k?='1G^gCo0HAA1G^gC'67)<AnGXeVQ3]^1G^gCPM&r$R[KS3Gn*k?c-4DU9L`&Jc-4DUN-\Mi1G^gC1T=D?R[KS3=lECHc-4DU9GU\p1G^gCdmmJ)AnGXeL4E>jc-4DUXL_Iuz@-L`Xz5TX#mAnGXek#tkPR[KS33K7-+R[KS33Q"raR[KS3H2C]/AnGXeAiEjX1G^gC;eK5uAnGXek+>dAR[KS3\_L=Qz!$k`5z!*38gR[KS3fp,`+AnGXeVTr@1AnGXeV?'mdz5XSa@c-4DU%!u2DAnGXeVQsDkz!:<uUR[KS3=XdT@AnGXeAnP@6z^nk:$c-4DU%,+rO1G^gCZPQn4zJ6ZAFz!17%W1G^gCF3n2X1G^gCo*eqj1G^gC1JqIDR[KS3R>>07AnGXeVT`@3R[KS3=Ue_'zJ4a06z5_i]3c-4DU9Z^X,R[KS3)$OD5AnGXeL*9qiAnGXeVF=lXR[KS3fj\>SAnGXe#)$ALR[KS3fr&4CR[KS3)9#uKc-4DUD!,1kc-4DUlj@/dR[KS3)(f8^1G^gCF%]q,1G^gCF)#,K1G^gC'96KdR[KS3RBL$aAnGXeVUT$>1G^gC'DGp#R[KS3q%[@(z+?a1!AnGXek$MR_c-4DUN.,5$1G^gCF/NJ4c-4DUbf4*Wc-4DU/F6h2R[KS3faqXY1G^gC1GrZ-1G^gCP?DB\R[KS3H$NmbAnGXeAtrj$z+N7hUz_!5Dpc-4DUC^jo?1G^gCP;6Z6c-4DU/6l^Nz@"2]PAnGXeAuK6*AnGXe7`]+*R[KS3H1GK2c-4DUN##ti1G^gCF#mktAnGXe#%hF3z!+9A'z!.\WGz!2*mgz!5N/2z!8qERz!$Gl=z!'k-]z!+9D(z!.\ZHz!5N23z!8qHSz!!$Xsc-4DUbWKN'z!+9G)z!.\]Iz!2*si1G^gC1W*ijz!!$[tz!$Gr?z!+9J*z!.\`Jz!2+!jAnGXeB#\LLz!!$^uz!$Gu@R[KS3R7V*Xz!.\cKz!2+$kz!5N;6z!!$b!z!$H#A1G^gC1K/$Rz!.\fLz!2+'lz!8qTWz!!$e"1G^gC1F$[#z!+9S-z!.\iMz!5NA8z!8qWXz!$H)Cz!'k?cR[KS3R;$J&z!2+-nz!5ND9z!!$k$R[KS3R42u<z!+9Y/z!2+0oz!5NG:z!8q]Zz!$H/Ez!+9\0z!.\rPAnGXeAu9H2z!8q`[z!$H2Fz!'kHfz!.\uQz!2+6qz!8qc\R[KS3R0dgtz!$H5Gz!'kKgz!)RW"z!,umBR[KS3R=T<Bz!2+9rz!5NP=z!75[Mz!:Xqmz!"a-8z!$H8Hz!'kNhz!+9e3R[KS3R;m43z!0D1cz!3gH.z!6B.Fz!8qi^c-4DUbkuHG1G^gC1E1@"z!&/FYz!)R]$z!,usDR[KS3R>GrLz!2+?tz!5NV?z!8ql_z!!%(*1G^gC1D=gpAnGXeAi=]qz!)R`%z!-!!Ez!0D7eR[KS3RAk6mc-4DUbfk,nz!8qo`R[KS3R/qCpz!$HAKz!'kWkz!+9n61G^gC1OF4/1G^gC1RiJOAnGXeB"i@PR[KS3RF-+AAnGXeB(g=3z!"a9<z!&/O\R[KS3R8J)lz!-!'G1G^gC1QurHz!3gT2z!75jRz!:Y+rz!"a<=z!&/R]z!)Ri(R[KS3R;mC8z!0D@h1G^gC1UD6iz!75mSz!:Y.sz!"a?>AnGXeAj1E(c-4DUbZ&dOAnGXeAp/A`z!2+O$z!5NeDz!8r&dR[KS3R/qOtz!$HMOz!(_?"R[KS3R:1>*z!0DFj1G^gC1TPacR[KS3RF-7Ec-4DUbk--FAnGXeAeoYWc-4DUbVXT1z!+:(;z!.]>[z!2t0.AnGXeB#]*]z!:Y8!c-4DUbS5@g1G^gC1Ga>B1G^gC1L#/jAnGXeAq#%kR[KS3RA"pl1G^gC1Wt)0c-4DUbj9X@c-4DUbS5Chc-4DUbVXZ31G^gC1Lkbs1G^gC1P:$>AnGXeB!-JGc-4DUbg^u)1G^gC1\5rYR[KS3R3?rCR[KS3R6c3cR[KS3R;mU>z!0DRnz!4[DAz!8r5iR[KS3R0e:,z!&/gdc-4DUbZ'!U1G^gC1P:*@AnGXeAu9uAz!76-Zc-4DUbk-<KR[KS3R3@#Ec-4DUbY3INz!-!BPR[KS3R@/LhR[KS3RDF>;R[KS3RIP_kc-4DUbS5OlR[KS3R6c<f1G^gC1Lko"AnGXeAsRp3z!5O(LR[KS3RH]2dz!"=BCz!$HeW1G^gC1GaPHR[KS3R7Vooc-4DUb[>rdc-4DUb]JA#z!/uFnAnGXeAtjf@z!478AAnGXeB$PolAnGXeB&\>+c-4DUbkQ]RR[KS3R1Y!81G^gC1F%H9AnGXeAj1c2c-4DUbYWjUz!,R3Oc-4DUb^=t,R[KS3R@/Ukz!3C`:z!6B^Vc-4DUbhRb7AnGXeB(CL<z!!n0AAnGXeAg2glR[KS3R5KR]AnGXeAl=4Gc-4DUb[c;jAnGXeAqGV"z!0i(#AnGXeB!R"Rz!5sISc-4DUbi"(<1G^gC1\ZJdc-4DUbRB+hR[KS3R43bRz!'Gm!R[KS3R9>/-AnGXeAo<5d1G^gC1Q-lNAnGXeAtFW?R[KS3RD"5<R[KS3RF-XPR[KS3RI,Vlc-4DUbQrkez!$$YW1G^gC1H0tPAnGXeAkn"ER[KS3R;IUBAnGXeAqG\$z!2,!1R[KS3RC.]51G^gC1XC_>z!9f)$1G^gC1]N+n1G^gC1EV<9c-4DUbVY#=AnGXeAkIbBAnGXeAnm#bAnGXeAq#G!1G^gC1REe\R[KS3RC.`61G^gC1WtJ;c-4DUbiFICc-4DUbl!/[c-4DUbT)@&c-4DUbVY&>c-4DUbYX$ZR[KS3R;%C@R[KS3R>$A\c-4DUbbTtY1G^gC1V\Z0z!8*#k1G^gC1])nlc-4DUbS5gtc-4DUbUeN7z!)SG9z!,.-QR[KS3R>H\a1G^gC1S]^j1G^gC1V8E-1G^gC1Y[[Mz!;qU;AnGXeAep1fz!'#d"1G^gC1J`flz!-!`Zz!0E"%z!3CuAAnGXeB$,opR[KS3RH]MmAnGXeAcdfSAnGXeAgW@"AnGXeAj2&:R[KS3R:V4?c-4DUb^>741G^gC1S]dlR[KS3RCS/>R[KS3RGiufAnGXeB(h'HR[KS3R2LlIAnGXeAi>N3z!*G+DR[KS3R<aZTc-4DUb`muMR[KS3RB_W7R[KS3RFR0[R[KS3RIQ/"R[KS3R2(WF1G^gC1G=YOAnGXeAlagTc-4DUb]&J*1G^gC1R!_^z!47YLAnGXeB$Q<"AnGXeB(h-Jz!#UY[R[KS3R5Kpg1G^gC1J`rpz!-jGfc-4DUba=>SR[KS3RB_]9R[KS3RFR6]AnGXeB)7HOz!#U\\c-4DUbW(SIR[KS3R8o53z!.9bkz!2PT>AnGXeB"j6iz!8NQ!1G^gC1C&q*1G^gC1F%oFz!(;i4z!-!r`z!/QY#z!3D2Gc-4DUbg_Y<c-4DUbj^WXc-4DUbSZC+z!&Ta%c-4DUb[?JsR[KS3R<aiYz!2trDc-4DUbf#Q-R[KS3RGj2l1G^gC1Bik*c-4DUbS6.(c-4DUbUS]>1G^gC1HggbR[KS3R7iW,z!+(aPz!-F;f1G^gC1P(WQ1G^gC1RF1gAnGXeAu:YTz!5+CYR[KS3RE:OUc-4DUbi"RJc-4DUbj^]Zz!!JELc-4DUbS61)z!%<spc-4DUbW:kOc-4DUbY4-aAnGXeAmUTbR[KS3R<+KUR[KS3R>$bgR[KS3R?s%$R[KS3RB)H81G^gC1Vo2=R[KS3RF.-^AnGXeB&o(>AnGXeB(h?P1G^gC1CK@2AnGXeAfQt!c-4DUbV52FAnGXeAjVYG1G^gC1KT`)z!,@Z^1G^gC1OkQQ1G^gC1Qdhcz!2boER[KS3RCSJGAnGXeB$?E'AnGXeB&Jh;AnGXeB(hBQR[KS3R0Sp@z!$7=h1G^gC1G=qW1G^gC1II?kAnGXeAlb*\c-4DUb\32*1G^gC1OkTR1G^gC1R4.hAnGXeAuLnYAnGXeB"X<mc-4DUbg;P=1G^gC1ZsreR[KS3RJ2n11G^gC1Co^8R[KS3R3@e[R[KS3R5L3oz!(`>>1G^gC1L651AnGXeAos8&R[KS3R>7"lAnGXeAt"rLR[KS3RB_uAAnGXeB#Kp!c-4DUbgr"Dc-4DUbik9Vz!!8ENc-4DUbSHI/1G^gC1FJGQR[KS3R6?g#AnGXeAlP$\c-4DUb\!,*R[KS3R<t2az!0ia61G^gC1Sp@%z!4\:Zz!7$ipAnGXeB&Jq>c-4DUbk@;eAnGXeAce8`

this_Y_data.npy.a85 : this_Y_data.npy.a85

P>5+P:g!f!7K@c_A7]glE[Nmj-Tl!#-S-AfAoD^3Ea`imDfTB"E[Nmj7U^+SALnrOF(f!$ALBM]-o`t:/1E+mI39XT+<VdL+<Vd6d$onl(u+mO[2K\P=ShkYNWIi!h&lMYp*3":=@N*OcjC1ah.lgO3%]C&=-3;D&emRMgpR#DH8_ff=53U:<#p!8g]77:/d+0_@4(n:Q6rH$gIqH/D[gNJ?uc*/f.YbcgQqb%Ynir5@(cD%)*&(Og>Vroo,lD!?O-No>=(O;fe!(d2(8^b?;g_dSP*s&fm!BZFtu$L?Ch$ZhGg;ffY[SO\3"K8?0M5OOs2Z_iXPlOqF$o#>r2IEe15)Ji`Q1E4AO:d>^lZ:(,_J6iM6B:ITH[P>KQk/=$Fh!i9pS/^L0!:>87*%R7I6ai&Ug%!GZB&>$q:ogJBWMhh;"o[5[ltA?,Yo*Elu8hp;<eHK5S@T)8OPCU[S_XqLe#RXDHdN@=im!MhVnE^'Oh056Br;,mT]?7t5!0l$bSN:T!%&:jgH]=<h)n<O&>l$_T-c`@+3(dg=2Y/10(IqlW<PLok#XY1=@Ep`omh"55D;?R"c$G*pH0cC'X3I_\L&MO5NB1-HPn3m@CQ3k=UcW^E8`6K&XYAjS./,#=cPD90(>.a/gF.E=sLk%jk;R6Bh[mc\o1<BP^jU1Hs&`3US'[T8#nFQ`H6C"!&cjBh>EE_k+Y93m3fR\*5PVrS.#"Qe9F%cX#2%1Q=;doen?A4W9<-n[3:7U,.:m;#HG84#);QU!cT8pr#<5nu)O/3@m:u;=>\/p@i;>:2XiKsCd;\9*s$5%4_<@S)9qBrdT;*tFN,G?^P;Hs;h9H'[K<-8:.Fd!XF<fR8IAZB-;;PsU^N[*-7;nrK#\"$*2<S7I>VmDT';=XfScR]B!;[W^npn`Gr<$VT3+Wp>m<]pRN&N2bb;H<oc3j5e]<,Vn)@ji_Y<JUcC;a51M;P=4YI(87I;n<)sV(l.D<RV(9O8Qi0F705sZRJt#QO<s^Sb0Yd[3l,CLVG0Oe3aC)Ef,n<nm;PcQ+&!.(469NJ:`[o24+P4C/+;[;mZ]nNI$CMGL-LYGX_,:Q0\Z>@LuX%Zj6k$L-=qnf-CPcE!THYp-8gI>LU7F'O:o.IK3983-b]nBZmq#=-WtT;jJSeFg2-9G/LaWREYq$@?)DD\*4)^93I!/ecc:D2'hUpoH=H)=]'fc(d80i50sWF=^;7t,#=B)R=#6)cYMk[eXHe/Zg)V>'tX]9QtcG!<n[dDIHZ:ZQMCbN@V6%=f,+cY8*5pu(cVdd/7f^Y=B>bn&`fU<R<Aj$p0oEtg6Dq/g>T6W)RTi9^L0!:>LWpDCOM>lQLbAI;#D/Of+JBT21(u2(buC_)Ythk=A]Ais*1_NR;`HtjS(S2foHG)a`bCj)QsH4Dauc=GgQg_:3tgmg@GV9oh&AA3#2ide9q<pRlCa?HVSnEpf\"i>(Iit>C?iD!)f:G\Xs3oi.OE"*5W%JL/kmKH/o;tAr'r&g]e-O$sDEO3@P>$l\gG)S4a5TP$IuRqJ?U*EK?q,?'#FZ(gnGV]!;]/pQEO0*RtN_SRXqYHM7e4I?s'4h&-Vd*ZKZT>sA`_^7Q;sh.-pZ?R3#?>`&qT!3&\_goh,OTe5G*>h'6J6F)+Jh"hFEj#.gk>9FA?KY+R6gI2Q:,sY0V>AF[5r[&='i/eC5T<#*H?a^D/5VP]hhqJT*iO%N3?NCX%JiS/ThBi^t,JFht?;(ho`'US?hJj#jA]I7_?C)-ez!5K(0@b-I2SELGJrXMAJ4qS;jR7I6ai&M<5r#LXrI:<^PQW?K5*fCOo16;@L^p=P:Q">b]?/,rU(sekKIf^0HAnugWck[0XQW?K5*\.dejmjMADa+du16;@L^f(e0J1K<X&SM_@Ynir5@!iMNi7mm:5EZRC.T0\k+fGr;=VnQp!59"0LYN:si6r6&[\70#^Zc:p!>s.UU&PZh0ARlXJJAb^?D;a]?n2gSW#4]969u2KfA/R>+]f7@"f%5A!GrE61hc*Fi.;P+J)4/#_O(p#XeVm&U95(ngh6\+J]&-c#70JUn_4X@1T/E*@e10s?Uh<UdL$UPMWL.)6R!..RF>_%YrNF^`H"VP+]/k;nI[K%P%YIn*3g9O!e:nK85T4$F-dM)FRS1Oj/s"[T8pr#<5oP9YC)Z!_;,_hg)GEJ1A)8F"-rEF1Cb'`&7&,i1+*`#3S)/d1dD^>7@kc11KbAV;.bGS13+$nHJeMO1Q)o3LSn4r18GRKYTV1m1qaPf]]^k:1Y*4)j^Fk62"))CnL4IX1C+[[)P_FS2'EZ!-Yq4!1cc=90Fboi`)IF93j5e]<,WI96rBUQjG=R9:%OBDFJKU9=-\28"MYX9@5i",Ph?a9C=uct,kMd9FF-ShZjmg9IN:C\6n&j9LVG0Oe3as9O^SuCA6p!9R,*s]KmFJ!T32f"VNqr^M'RBb`Ng4DOJ)A'k0=],HY[#i"R?dfK'2".,mP2NLgs`G7O&[6F"YF3ANpqqHE'>ML0GEYJL86gVfrnAC[ihR`fh0'Ec%`lkH>Xd=q[L*QH^116+<1;7dCgT.9qqNo`u@!/[Cr9V^<3F'j$ZK=%!iir;2E\#@\K7jIh0o[XT)Ykk:1ZBUor)d$onl(qUSL\3PZ*a4M1nSA,Aa#l#3$JNf2D8J`4/8dkbOLGfu708k\3a&NsA'+,=j#^$tLpkY:M8X(&Wh$5(1M6e$aVU^d<a3keiMc:Nt#kAftDpt?W8.c_)21(u2(buso(Y#q<ku&Bah0ZZm\8rNQ^XUT!MNeuDKm_7R=g],48gMg-.+T8$/:H`6qXtdlng*IgaVPj\e9q<pRlD<ORO%uLC0;H??)NgNb'P$l+=SMP.\7PDj/TERMSL,qV(=tRlf&gJBWffT9*H8".kkLVX!\iOm]lDX$VD@'Yqq*ZCMXqTFL;k\bDmN,(gnGV]!<8?fXjB)X4A4TQks-PSba9j42P^JM]Nj'r#LXrI6no=T?*4lCM"PO?R3#?>`'Ld"4+Z99<K7"_^aNa4OP37A?U3,]_<C2"Z-fL4<5G-_J-iE^-Wi*A+!Me5%ks%"EX51]o=$tV>#tQ4gQ.o7XQRq^"=>jk5`=<4oQHeKjX-.9dLiG,JFht?;)D*_&PUeDfZsb6cr3)I@;3Bi@&toNklc%Itsa`TBI=]*TkNQYR_g@T9J+j^,@&u3m<p,?sb!@\PkOks+_[]38<5UT!0;%dhA$l5hR5EWD/o<mf4IqBT_\058>;+[OoX<O=;;;G&\H1i&r2J1nq?9pei5"o$U6A&831OYQO'I."*4'DDZmQ5a!6T/7f^Y=Jm9,lBSX`EP*DZW5_IhM:!G2er-5lB]gL'PGs.28c9bs_/@o6-kdahIZ1gQ#q7#_X\fVVkWU.TBlEKpa]'EKQo%:uW+mJ@`TH47:k9cTJFO$dqNi?jXeVm&U95Y)g/U]>8];i<#70JUn_53P1qJ=lRIVLd@;I+.5m\`#N=,tXZ61>V\Z5#.+ugc3<q/ZAO\[/dJrhNk!bW]BXY1=@Edf2t96P+Sift]QG84#);QV-.'1qgOMT$c)4k1]7_qcM%fa,O^qXl$tFZa9/1(GNoT?*4lCF18k48^s=UHTnfef5g"UK8[*EBOZ\UMqGC$XWH?Ukp<](a`/bUS8tuZ:6uFUUqa99kPi+UXUMRk_BbeU[99kJX&T\C^24NN(W@<1a+,0-!2/4r&Q)g0Fboi`)J!Iar9paNG^",e^'_B</;ebhJnF5jJ!nbkS&6)FM/qbo!N+r"P=tbqc?gePk$(b"o:WY,Rl%b&"GGMZmR.b(Fs5S%7;F,+1e,ZAR6ZJRIElJ]QkegU47cQ'pU(1WXcQWDQkEP,;Q@[NQ`\6RoQ)]Xlq&r'R>j`blf@Y)tac%mN<iAP8FF'%Qu.($p=8*/m0MdK1n%@(3V#iqcn!WrfSTnEc%`lkH?3tl$_T-ccd_$dP[5,[co,(82D#UB*TeL0\?ih(*t=nVU^d<a$M.=NI$CMG@2d`"*b2!."3O/lPp#4f:+-QdB5gY:V%o=\3PZ*a4Mb)T$kIO5PHNjKOb)s\.pDWCA'nC0Jk1C:Nab'E)S/MVOPLHY];-WM],:,n<#+aiBTpL0X3#k`kTj0E6p!u*7GReGjm+HETU>DJ.O.p<)P*:M(gADWb#soO\dJls*1_NR;aT?;gCIABosi0Vg6<33jL2"Ca$kc$.C=g^`c[Vg%-XX'+ZL\EYU&hf;!:J$9'G"RlIt9Ti`d0mNmk?3dN8@ZF\S-d[M^OFZa9/1;55'355+1P2IfTq`fl3ncC=,^;1U4;^EqZJO?A6ZUZN26F)+JghJ?)Fi_gH"-+ls2`IT]/?p]jC/+;[;q*<_S5>#l6hi/s>cam?1`S&3NitUP,X<nG^p;Ca'P&a[n=m*/c%mo9P<&_=KWQdj_^aNa4OPcGoGY>0p%Bq%,R^!TXW&iW`K)`t/O:sRAe`E?X_'.MQ1=<!/rVAI2KjrBXg'HCe`UZtp=Cl]F]hCS55m-!'[&)1L*SB:Zoelec:T]S`'US?hJk/5@\M@0n!G^mEi4#`rkC'N&-e_Q&*GQ1*r1G>k70.1/aR2,^G[`145WhnQX2=19%#S\Dh]o1=0c<\&?d`Pei<qFYLbEmndHH5-NGhcq"ug4GSDhs2`IT]/1E8<G&\H1i&rbZqc?gePYs2#3g.[987sVApqgRA@!jXn[e'IIG`a[F/U5ZEOJX]sCS-X-%(n8Z@2al]Ls[nASj>aD"QqI(Pe9&tJG_)d$8,B/?kP1ZJ=gi?5U\?Poam,N+?hMFZ7^$i!E:d=@-ZoL7;=PB<)P*:M1@<G!Y1nrc'C(LG&.<@FfdA`UE6/W*Q0Ztd*P"n`S*%3I<bkedIAqV.3cYZh?Yl%e]NPPl5qcH43)m<oenQjAnGXeAkk*H93I!/en$U%GPGsZ7X[$Wg>T6W)O3'C50NQUm]80/U9llS_Se2p#+g/PQeX>]U<t""cL`kWKs?=S#7WIS+lt*%4s`!MKY+R6gH@>XTB1?;G?-Lb]+7/A'5oZl<A5o%'8SG0n5'h_';73I6cD$7'=otb?/.mOGgeH60Lq2]g[$^]"1$Oj56`r0<>.dV#9YigVf]0BcT*gIqUHQ.Qr>h,b:TiN`,.=r<S;Rbn:rhc-SYn.*258T1"5j"XLpAT3d'Pj4P)DT6l4@^bjdMTc*-70_$i1d<_3$X[3mgshr"m+WBrI-TYl/&!F@WK@A`F!=a;ki,)KVqZ'7+2@q,%LD6Pl_UH=:&.EjY7j:iWVjl\KdUu^&d"p?hL*!jXf-6P33gt.*u7Q`RoeFAoWb#gPebR:Y9:3AH[6QGFO2Nfs`F+@YY*j7Iel]@Up#0\tjRd2fY;X$))8k.+CSd%,=5YWh7lQ\>RDk?6URmAtu=$tsg94'VC"cL9d?[XjuCaS%UF.5*R)K*@RLUf?/z!8'4qk)hkFGkO']"`E/@;\_8WCA'nC0JkaSd!hdH$r],NDGb"u9QE*X$R@-LN0-(b.I@SY0X3T&7^hpeeBg0?@t3/pH13dY\<7jOJIjh,%AmS/LbLhSiigHBoh[Y6[^e+U@<":mMo1ric&k"Ohnpb\S[(7@lkf#CD::L1^CHbiU@^H293I!/eeL52f;!:J$9("2ioGQDU0'HAVg6<33dNhP0sUPa2OlfnFZa9/1;5e7355+1P2JAdq`fl3ncCm<4h*Rh[j=+$3.rb=HUp4`HMlWs5AN>GotKt(B9#&=Dh/&1O0Lc3Bf\<n*7[,9)b7!KVt`>=PkG;gQlJ4R`qc*#Ld4'fGOndhggiN4.I@SY0SqnW&ht\qkcHs466QC?U!c%g/7f^Y=SFpCQ(M%QF<!G/rRm5GO[2,qjU1Hs&SF6lbr\\JOc2FgmC!DIFg=.q%Pl/I=kGl&XeVm&UAd;@9biUZl6JPY,gjd`Q:jD,6TNPs6?57TRd2fY;OK^6nXZ'?@_b/mJ=9ZMf&o4^=$tsg9+O6PAN%UT,<%hPF=F@Bqd)KP!>Dtc2hsU_O8Qi0F0@en<A5o%'A,N70aOj#=o^fQ<#p!8g_<"=Ftu$L?7A-)[;;ru&jAQG(juR%`_o&eQEgp=XCjd`<9'gE`-ag8mQFfqglXieltM6i-Ds*o`kTj0E4eG$i"2p<m*S'`qI,'HB]hWG0\?ih(B$K`M'RBb`=bI%s-8irV'nVpF9f',Kg%df.Wf!,QW-79qZXT?gM0#>ba0,R++Z^Ch'<2UQ'Xd%m]lDX$a)c\5<<rKZc#-pD!Veb>MDG/fpP1i2=a$uKgGn^64#tD%Me%%9cubfqRAF_N&O'g_M4sib"b8gb"o$c3bC]DmQFfqgjMLS2?NE[I[*5bRd2fY;QW8NrmZ2W-H/;:IcG4i/DWWX54.jkAG&8S+jF+GSIIqOr;2E\#:;f'quENNEBZ`T(Fs5S%9Gn^E_sVHgM]GEc#jq=WJEo,BU/e"WM)[E*o*<ogU]a;eKHlh%Fda1b[P&QEU?+YhT.hM#7!X^'F">$SfgEd6]cp5Ai`=Fea.if?rTNZ6Z\ef>&H_n'[&)1L585_hJnF5jJ#%-bjNTj6G5cPer[D^daplP+"fSAPk%4-BZmq#<t.S`cAh&p9.34oF%`PWEC3/[(^Y%>QX3*GrP?9jms.>erL^uTH'Lf`,#kPp"0k9[5?D'o^W],3^FOp9Xlr2=>:!Akc3-U%pDtqImN=taYW]<<5WqS%W)q+s`*#Pp_ahY089RHff7o0&rfT`9:7&r<k-%6>ilnUg!6mtuFTS!;)sTmX-!`>&Ad:gk'XM*SjWm>]6NeAqPsRu+EE1\97:8VN]ZW`k-[nQN7m0884.Jf+mF1TmJ\"?:e7CA>q:J2&h9Ak=Eq`'hi.OE"*#;(1+udCKpbYN,Uu^&d##n,Y-'IJ''QZf1k;nU0<0Bd;`!G>L`j&'"^&-j'C=,R;pZZqH5k.B1;m,UB(D05(WPLD"+#->P@A`F!=]%aU2R$25`GnI7-JrW\A!0DKHJeMO1UBY<WsPNg"4Tn-pK7:="nbGPVg6<33Yk=QEkat=TJoJ.=t4G\3*Aj=JrhNk!ddO)l1'+irgZSG:fGQgqS#Qee(Mk$.,dc`Q<RN%M$$C9FTS!;)^\3CPb`(AhagC*nj1T6eS@fCC]ra?rJjN9-c1V9=0bIa+FCg!j4-dfp0A:.Du!$k$p=8*/fdVN@MNfl*^NIbdhA$l5\3VSKFL_\P_i(!;Co;a)Qlb!?Uh<UdaCfSLkT$]]_>)b'UEu/fc3^ORIt#;-ULNmJL86gVe8^hKm_7R=cH-@V>#tQ4gRjJ"`E/@;qXl1Uu/lrSGu;K@!5<e(+)dA>6o7G_G!]iEkat=TQ<jna`45#YaS<P?ltrNo"e'd'CnH8B'E&U"i,?e%1uB$2i0h.jZ$%$Km1(`mpJpVn;?.R.u@%eR[KS3RB]OQK;7MX3SI7o6tpT/K`P"8B7;]C#Sp6%.Zm+PUFK)*H8_ff=$KMHC=uct,ZIT*kmh08$>E=%#=>_H$%>]9ZNjZb+d5_f&N2bb;Q*DWl\gG)S@q`aA`"6=s3a_/+"fSAPitq/B+M?N6iKnI:@<<S$5??&`*\]cl7#Rqg!9=jj$-C+IF,<'oi4jS^sBN0+Dan?O^SuCA:dZD'O7`<_3e(bZ[;8I:p3_]nsG!Npr-)q^IW%]\_L%I4^j0PPk.a;32$laLC-pEj@RcWP9EghXVX>bd5Y#h($#3d-r<f,*N]9^QtK;^ZNjZb+b*BTl!XI^_j41c9hI^\Q`a4O5K;KdKZ6nTj/TERMV_5r!k7U[WV04T@_TJTq[QOi@DgPEALCDAmTMq@kW`!2*:Wc4KNM/<G84#);K5W#@*J_(3Jpa#k^rYs3MTM<&N2bb;S5pnBR(ZSS^gY(9M\dM!UirPd3@?@IL&n<Q1=<!/g=7[e`UZtp,c5=a$q1Xf2Yd8e]NPPl>KWeQ+&!.(5c'VdE<r(>GP4`:#!Fgd_8[GB]u)H@bF^G&r>04$hRC`l*mhuk71KW@-,`ZgF6,fG7Zi7kX8E9WaJe(-X]q>Nu=mTIsY0\OS>c?$("XW1"5j"XKkhkENG)QB[0UCcDo4@<pE[Mg_!9h?3XFq#+g/PQQfHqif`=skrr-5g8t-UD-L%+El;./$@#T:Qu3Oh^m%kbr=`G;W3KAgnOrhnWQnO0,_%N;h!8!+j[?]f.1''@e=,M?V^>J1A+!Me5"&I;+OY18#@^b"IC%1Xl$lc"osre6rLI"TY.JtZ6bHJc#.n<uU=r[6N(W@<2#13<TPVachA99ZoSG\%\i*YUei<qFY>n[ik':oieoY"Z,>*<809fR(!>s.UTsIid*oXKa7FP@(aZT,!"7oV[z!!$.e

So, just triple-click in the contents above to select all, then copy, then paste in a new file in your text editor, then save as the files named above somewhere on your system;所以,只需三次点击上面的内容到 select all,然后复制,然后在你的文本编辑器中粘贴一个新文件,然后在你的系统的某个地方保存为上面命名的文件; then, in that directory, do:然后,在该目录中,执行:

$ python3 -c 'import sys,base64; f=open(sys.argv[1], "rt"); fo=open(sys.argv[2], "wb"); fo.write(base64.a85decode(f.read())); f.close(); fo.close' this_X_data.npy.a85 this_X_data.npy

$ python3 -c 'import sys,base64; f=open(sys.argv[1], "rt"); fo=open(sys.argv[2], "wb"); fo.write(base64.a85decode(f.read())); f.close(); fo.close' this_Y_data.npy.a85 this_Y_data.npy

... and then you can do the terminal session test as I did above - here are just the commands for easier copy/pasting (two line endings after the with... lines are deliberate, so you can paste the whole snippet in the Python interpreter, without it choking with syntax error): ... 然后你可以像我上面那样做终端 session 测试 - 这里只是为了更容易复制/粘贴的命令(在with...行之后的两行结尾是故意的,所以你可以将整个片段粘贴到Python 解释器,没有因语法错误而窒息):

import numpy as np
with open('this_X_data.npy', 'rb') as f: this_X_data = np.load(f)

with open('this_Y_data.npy', 'rb') as f: this_Y_data = np.load(f)

my_X_point=0.03
print( np.interp(my_X_point, this_X_data, this_Y_data) )

Well, you know what they say, in the ancient saying: "if the array arguments of np.interp look fine, then it must be third one that causes trouble";好吧,你知道他们怎么说,用古语来说:“如果 np.interp 的数组np.interp看起来不错,那么它一定是第三个造成麻烦的”; and indeed it is - turns out, the my_X_point in the original script is not set explicitly to my_X_point=0.03 as in the tests in the OP (which would make it a float) - instead it comes in from argparse, and it is a string (which I found by adding another printout of type(my_X_point) .事实上它是 - 事实证明,原始脚本中的my_X_point没有像 OP 中的测试那样明确设置为my_X_point=0.03 (这会使它成为一个浮点数) - 相反它来自 argparse,它是一个字符串(我通过添加另一个type(my_X_point)的打印输出发现了这一点。

So then I did this test on the Raspbian Python:然后我在 Raspbian Python 上做了这个测试:

$ python3
Python 3.5.3 (default, Jul  9 2020, 13:00:10) [GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> with open('this_X_data.npy', 'rb') as f: this_X_data = np.load(f)
...
>>> with open('this_Y_data.npy', 'rb') as f: this_Y_data = np.load(f)
...
>>> np.interp(0.03, this_X_data, this_Y_data)
3.0728648
>>> np.interp("0.03", this_X_data, this_Y_data)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/numpy/lib/function_base.py", line 1881, in interp
    return interp_func(x, xp, fp, left, right)
ValueError: object of too small depth for desired array

>>> np.__version__
'1.12.1'

Eh, finally, it makes sense which "object" is "of too small depth for desired array", and why it is so - it is a string, instead of a number!嗯,最后,哪个“对象”“对于所需的数组来说深度太小”是有道理的,为什么会这样——它是一个字符串,而不是一个数字!

Though, note, this seems to not be an issue on my Windows MINGW64 Python 3.8.5:不过请注意,这似乎不是我的 Windows MINGW64 Python 3.8.5 的问题:

$ python3
Python 3.8.5 (default, Sep  7 2020, 18:26:56)  [GCC 10.2.0 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
import numpy as np
with open('this_X_data.npy', 'rb') as f: this_X_data = np.load(f)
... int=0.03
...
with open('this_Y_data.npy', 'rb') as f: this_Y_data = np.load(f)
...
>>> np.interp("0.03", this_X_data, this_Y_data)
3.0728648

So, one solution for the original script code, is simply to cast this string to float:因此,原始脚本代码的一种解决方案是简单地将此字符串转换为浮点数:

        my_Y_point = np.interp( float(my_X_point), this_X_data, this_Y_data)

... and things start working again! ... 一切又开始运转了! :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 numpy:ValueError:对象深度太小,无法获得所需的数组 - Numpy : ValueError: object of too small depth for desired array 插值问题 - ValueError:所需数组的深度太小(Python,numpy) - Interpolation Issue - ValueError: object of too small depth for desired array (Python, numpy) scipy.signal.lfilter: *** ValueError: 所需数组的深度太小 - scipy.signal.lfilter: *** ValueError: object of too small depth for desired array ValueError:对象太深,无法在np.digitize函数中使用所需的数组 - ValueError: object too deep for desired array In np.digitize function 使用 scipy.signal.lfilter 时,实现巴特沃斯带通滤波器遇到:“ValueError: object of too small depth for desired array”错误 - Implementing Butterworth bandpass filter running into: "ValueError: object of too small depth for desired array" error when using scipy.signal.lfilter 值错误:对象深度不足,无法容纳所需数组 - Value Error: object of too small depth for desired array 使用np.interp插入缺失值 - Interpolating missing values useing np.interp 函数 np.interp 和 Pandas Python 出错 - Error with function np.interp and pandas Python ValueError:对象太深,无法放入所需的数组(netcdf) - ValueError: object too deep for desired array (netcdf) ValueError:&#39;对象太深,不适合所需的数组&#39; - ValueError: 'object too deep for desired array'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM