簡體   English   中英

軸超出范圍

[英]axis out of bounds with array

我寫了這樣的代碼。

import numpy as np
import math
p0 = np.loadtxt('A.txt', delimiter=',')
p1 = np.loadtxt('B.txt', delimiter=',')
p3 = np.loadtxt('C.txt', delimiter=',')
p = np.loadtxt('D.txt', delimiter=',')
d = 3
def distvec(p0,p1,p3,p,d):
    vec=[]
    for j in range(d):
        p0 = p0[j]
        p1 = p1[j]
        p3 = p3[j]
        p =  p[j]
        u = p0 - p3
        v = p1 - p3
        n = np.cross(u, v)
        norm = math.sqrt(np.dot(n,n))**(-1)
        n=n*norm
        p_ = p - p0
        dist_to_plane = np.dot(p_, n)
        dist=math.sqrt(dist_to_plane**2)
        vec=vec+[dist]
    return vec
distvec(p0,p1,p3,p,d)

文本文件看起來像這樣。

A.txt

23.172,-20.751,31.982
23.049,-20.789,32.164
22.914,-20.952,32.14

B.txt

21.879,-17.819,34.467
21.727,-17.975,34.311
21.804,-18.267,34.462

C.txt

20.273,-20.379,34.271
20.144,-20.614,34.36
20.065,-20.765,34.408

D.txt

21.936,-19.639,33.555
21.771,-19.7,33.506
21.581,-19.955,33.543

但是,我收到一條錯誤消息,內容為

文件“ test.py”,第25行,在distvec(p0,p1,p3,p,d)文件“ test.py”,第17行,在distvec中n = np.cross(u,v)文件“ / Users / Sam / anaconda3 / lib / python3.6 / site-packages / numpy / core / numeric.py“,第1709行,橫軸a = normalize_axis_index(axisa,a.ndim,msg_prefix ='axisa')numpy.core._internal。 AxisError:axisa:軸-1超出維度0數組的范圍

有人知道出了什么問題嗎? 非常感謝!

np.cross(u, v)返回兩個向量的叉積。 在您的情況下, uv不是向量,而是維數為0的標量。這是因為您具有u = p0 - p3 ,其中p0p3是數組的第j個元素( p0 = p0[j] )。

要進行驗證,可以打印uv並檢查它們是標量還是一維數組(向量)。

暫無
暫無

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

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