小编Jul*_*ius的帖子

我在切片范围中使用什么值来包含numpy数组中的最后一个值?

想象一下一些numpy数组,例如x = np.linspace(1,10).

x[i:j]让我了解x范围[i,j).我喜欢我也可以这样做x[i:-k],排除了最后的k元素.

但是,为了包含我需要做的最后一个元素x[i:].

我的问题是:如果我需要循环,我如何组合这两个符号k.

说我想这样做:

l = list()
for k in [5,4,3,2,1]:
    l.append(x[:-k])
l.append(x[:])
Run Code Online (Sandbox Code Playgroud)

令我恼火的是最后一行.在这个简单的例子当然,它没有太大的区别,但有时这会变得更加烦人.我想念的是更像DRY的东西.

以下代码段不会产生预期的结果,但代表了我寻求的代码样式:

l = list()
for k in [5,4,3,2,1,0]:
    l.append(x[:-k])
Run Code Online (Sandbox Code Playgroud)

谢谢你的支持.

python numpy scipy

11
推荐指数
3
解决办法
4926
查看次数

了解python socket io / aiohttp服务器中的异步等待

我正在尝试使用python-socketio设置socket.io服务器。这是一个最小的工作示例:

import asyncio
from aiohttp import web
import socketio
import random

sio = socketio.AsyncServer(async_mode='aiohttp')
app = web.Application()
sio.attach(app)

@sio.on('connect')
def connect(sid, environ):
    print("connected: ", sid)

@sio.on('sendText')
async def message(sid, data):
    print("message ", data)
    # await asyncio.sleep(1 * random.random())
    # print('waited', data)

@sio.on('disconnect')
def disconnect(sid):
    print('disconnect ', sid)

if __name__ == '__main__':
    web.run_app(app, host='0.0.0.0', port=8080)
Run Code Online (Sandbox Code Playgroud)

运行正常,例如,我可以执行(在node.js中)

const io = require('socket.io-client');
const socket = io('ws://localhost:8080');
socket.emit('sendText', 'hey 1')
socket.emit('sendText', 'hey 2')
socket.emit('sendText', 'hey 3')
Run Code Online (Sandbox Code Playgroud)

如果我运行服务器并运行上面的节点脚本,我将获得服务器端

已连接:c1e687f0e2724b339fcdbefdb5aaa8f8

消息嘿1

消息嘿2

消息嘿3

但是,如果我在代码中用await …

python asynchronous python-3.x socket.io python-asyncio

3
推荐指数
1
解决办法
2030
查看次数

将类变量重定向到类函数

我们以一个简单的类为例:

class Vector:
    def __init__(self):
        self.x = 1
        self.y = 1
        self.z = 1
Run Code Online (Sandbox Code Playgroud)

我想要的是给这个类一个变量,sum这样我就可以这样做

v = Vector()
v.sum
Run Code Online (Sandbox Code Playgroud)

我得到了总和x+y+z(在这种情况下为3).当然,我可以很容易地创建一个类方法来做到这一点,但后来我必须写v.sum()而不是v.sum.有什么方法可以隐藏这个类在请求变量时实际调用函数的事实吗?

提前致谢.

python oop

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

gmsh中如何保证节点点?

我正在尝试构建一个非常简单的网格。我有一个盒子:

box_size = 50;
lb = 10.;
Point(1) = {-box_size/2, -box_size/2, -box_size/2, lb};
Point(2) = {box_size/2, -box_size/2, -box_size/2, lb};
Point(3) = {box_size/2, box_size/2, -box_size/2, lb};
Point(4) = {-box_size/2, box_size/2, -box_size/2, lb};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(5) = {1, 2, 3, 4};
Plane Surface(6) = {5};
Extrude {0, 0, box_size} {
  Surface{6};
}
Run Code Online (Sandbox Code Playgroud)

这工作得很好,gmsh 很乐意对其进行 (3D) 网格划分。问题是我要确保盒子内的某些点是节点。所以我的问题是,我如何确保这些点,比如这些

lc = 10;
Point(5) = {7.150548, 1.000000,  -6.990684, lc};
Point(6) = …
Run Code Online (Sandbox Code Playgroud)

numeric mesh numerical-methods finite-element-analysis gmsh

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