python - 理解 numpy 数组行为的困难

标签 python numpy

以下是我的程序的(非常)缩短版本

normvecs向量没有被覆盖,只要运行此代码片段,您就可以自己看到参数是正确的 geom 函数接受 n+1 X 2 数组和 n 作为输入,我想我正在做一些非常愚蠢的事情(我认为我是)或者我不理解这种行为

import numpy as np

#geometry calculations
def geom(pts,n):
    r = np.zeros(n)
    normvecs = np.zeros((n,2))
    tgtvecs  = np.zeros((n,2))
    alphap = np.zeros(n)
    cpts = np.zeros((n,2))
    #collocation points
    cpts[:,0] = (pts[0:n,0]+pts[1:n+1,0])/2  
    cpts[:,1] = (pts[0:n,1]+pts[1:n+1,1])/2
    #length of panels
    r[:] = np.sqrt((pts[0:n,0]-pts[1:n+1,0])**2 + (pts[0:n,1]-pts[1:n+1,1])**2)
    #angle of each panel with the horizantal(chord)/refernce axis
    alphap[:] = np.arctan2(pts[1:n+1,1]-pts[0:n,1],pts[1:n+1,0]-pts[0:n,0])
    #normal vectors
    normvecs[:,0] = -np.sin(alphap[:])
    normvecs[:,1] =  np.cos(alphap[:])
    xx = np.cos(alphap[:])
    print(normvecs[:,0],normvecs[:,1],np.cos(alphap[:]),xx)
    return

geom(np.random.rand(31,2),30)

normvecs[:,1] 显示的是 nomvecs[:,0] 的负值 我无法像normvecs[:,1] = xx那样覆盖(没有错误..但只是打印了相同的内容)

我可能听起来不太清楚,一旦你跑了,你可能会明白我想说什么。

有什么问题吗?(如果是的话!)

最佳答案

我看没有任何问题。运行更简洁的代码版本:

import numpy as np

#geometry calculations
def geom(pts,n):
    normvecs = np.zeros((n,2))
    alphap = np.zeros(n)
    alphap[:] = np.arctan2(pts[1:n+1,1]-pts[0:n,1],pts[1:n+1,0]-pts[0:n,0])
    normvecs[:,0] = -np.sin(alphap[:])
    normvecs[:,1] =  np.cos(alphap[:])
    print np.abs(normvecs[:,0])-np.abs(normvecs[:,1])
    return

geom(np.random.rand(31,2),30)

产生类似这样的东西:

[ 0.47500019 -0.03182906 -0.46597523  0.7479451   0.12580804 -0.36311644
  0.06406616 -0.29641905 -0.39982319 -0.98493049 -0.4431009  -0.29506693
 -0.25931983  0.67831564 -0.80676608 -0.53007712  0.63448069  0.67457029
  0.25457744 -0.82095266 -0.27461275 -0.91244341 -0.69530798 -0.69023852
  0.18840807  0.49891863  0.52417747  0.06833423  0.83449866  0.47608894]

这对我来说,你所说的两行 normvecs 的元素在大小上是不同的。

关于python - 理解 numpy 数组行为的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7091544/

相关文章:

python - 随着时间的推移,Tkinter GUI 应用程序运行速度会变慢

Python字符串列表2D

python - 计算多个文件(文本)中的两个值(总单词数和唯一值)并在 Python 中输出 csv

python - 从 JSON 中删除 JSON 对象?

python - 如何使用 scipy stats 打印线方程

python - 从 numpy.datetime64 转换为 pandas.tslib.Timestamp 错误?

python - 如何使仿射变换矩阵成为透视变换矩阵?

python - 何时缓存 DataFrame?

python - 从数据中查找峰值

python - 如何在 Python 中从 CSV 导入数组数组