小编dam*_*ien的帖子

如何在numpy中进行分散/聚集操作

让我说我有阵列:

a = array((1,2,3,4,5))
indices = array((1,1,1,1))
Run Code Online (Sandbox Code Playgroud)

我执行操作:

a[indices] += 1
Run Code Online (Sandbox Code Playgroud)

结果是

array([1, 3, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)

换句话说,重复的内容indices被忽略

如果我希望重复项不被忽略,导致:

array([1, 6, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

上面的例子有点微不足道,接下来正是我想要做的事情:

def inflate(self,pressure):
    faceforces = pressure * cross(self.verts[self.faces[:,1]]-self.verts[self.faces[:,0]], self.verts[self.faces[:,2]]-self.verts[self.faces[:,0]])
    self.verts[self.faces[:,0]] += faceforces
    self.verts[self.faces[:,1]] += faceforces
    self.verts[self.faces[:,2]] += faceforces

def constrain_lengths(self):
    vectors = self.verts[self.constraints[:,1]] - self.verts[self.constraints[:,0]]
    lengths = sqrt(sum(square(vectors), axis=1))
    correction = 0.5 * (vectors.T * (1 - (self.restlengths / lengths))).T
    self.verts[self.constraints[:,0]] += correction
    self.verts[self.constraints[:,1]] -= correction

def compute_normals(self):
    facenormals = cross(self.verts[self.faces[:,1]]-self.verts[self.faces[:,0]], self.verts[self.faces[:,2]]-self.verts[self.faces[:,0]])
    self.normals.fill(0) …
Run Code Online (Sandbox Code Playgroud)

python numpy

5
推荐指数
2
解决办法
3609
查看次数

numpy矩阵乘法

我试图找出如何在numpy中进行一种标量矩阵乘法.

我有

a = array(((1,2,3),(4,5,6)))
b = array((11,12))
Run Code Online (Sandbox Code Playgroud)

而且我想做

a op b
Run Code Online (Sandbox Code Playgroud)

以导致

array(((1*11,2*11,3*11),(4*12,5*12,6*12))
Run Code Online (Sandbox Code Playgroud)

现在我使用以下表达式

c = a*array((b,b,b)).transpose()

似乎必须有一种更有效的方法来做到这一点

python numpy matrix

4
推荐指数
1
解决办法
1623
查看次数

标签 统计

numpy ×2

python ×2

matrix ×1