Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用numpy满足布料模拟的约束条件_Python_Numpy - Fatal编程技术网

Python 如何使用numpy满足布料模拟的约束条件

Python 如何使用numpy满足布料模拟的约束条件,python,numpy,Python,Numpy,我正在尝试使用python+numpy编写布料模拟 我有一个使用python和循环的工作布料模拟。然而,numpy版本并没有像预期的那样工作。 tmp是按边顶点排序的顶点位置数组。 |边1.点a |边1.点b |边2.点a |边2.点b pos1 = tmp[::2] pos2 = tmp[1::2] delta = pos2-pos1 deltaLen = np.linalg.norm(delta, axis=1) f = (delta.T *

我正在尝试使用python+numpy编写布料模拟 我有一个使用python和循环的工作布料模拟。然而,numpy版本并没有像预期的那样工作。 tmp是按边顶点排序的顶点位置数组。 |边1.点a |边1.点b |边2.点a |边2.点b

    pos1 = tmp[::2]
    pos2 = tmp[1::2]
    
    delta = pos2-pos1
    deltaLen = np.linalg.norm(delta, axis=1)
    f = (delta.T * (deltaLen - 0.2)).T * self.k
    tmp[::2] += f
    tmp[1::2] -= f
这是查看链接对之间距离的片段,然后设置新距离

我已经包括了一个运行模拟的网格图像,目标是使所有边的长度为0.2,起始长度为0.25 代码可以在数组中循环,但不能在numpy中循环


是因为你的切片长度不同吗

import numpy as np

tmp = np.random.rand(7)

pos1 = tmp[::2]
pos2 = tmp[1::2]

print(pos1.shape, pos2.shape)
>>> (4,) (3,)

# make array slice same length
pos1 = tmp[:-1:2]
pos2 = tmp[1::2]

print(pos1.shape, pos2.shape)
>>> (3,) (3,)

“但是numpy版本并没有像预期的那样工作。”如果你提供更多细节,别人会更容易帮助你。你得到了什么输出?你期望得到什么?另外,如果您有可以处理循环的代码,那么您应该在问题中包含该代码,以便读者可以清楚地看到预期的行为是什么。事实并非如此,但感谢您的建议。我将更新问题的具体内容。问题是使用numpy数组ops只访问一次索引,我需要的是ufunc.at多次访问索引。