我维护了pypi.python.org上提供的pi3d软件包.在v2.8之前,搜索"pi3d"总是返回最新版本.随后列出v2.7 + v2.8,然后列出v2.7 + v2.8 + v2.9.即使我现在在v2.10,这三个仍然列出.即没有列出最新版本,它需要敏锐的眼睛来发现v2.9页面上的文字,说它不是最新版本!
NB所有旧版本都被标记为"隐藏"我尝试了许多不同的隐藏和取消隐藏版本的更新,更新版本,打开和关闭自动隐藏旧版本,编辑每个版本的文本等无限制.
我错过了这种行为的明显原因吗?
以下Python代码将重复将向量添加[1, 2, 3, 4]到二维数组中的每一行a,仅从第20行开始.
import numpy as np
# an array of shape (100, 4)
a = np.zeros((100, 4), dtype=np.float32)
# and this is the operation explained above
a[20:, :] += [1.0, 2.0, 3.0, 0.0]
Run Code Online (Sandbox Code Playgroud)
这有简单的等价ndarray吗?我已经可以用更复杂的杂乱外观代码做我需要的东西但感觉可能有一个整洁的ndarray.rs等价物.
好吧,冒着过度复杂化问题的风险,我认为可能有一个简单的答案,我无法发掘......
我使用f32形状的数组(n,8)表示三个顶点位置,三个正常组件和两个纹理映射坐标.我正在将多个3D对象的缓冲区合并为一个,以实现更高效的图形渲染.在8个宽阵列中,前三个值需要缩放,即乘以&[sx, sy, sz]然后使用标准rz.dot(&rx.dot(&ry.dot()))函数旋转,最后&[dx, dy, dz]添加位移.法线只需旋转即可.我当前的系统涉及将数据保存在中间数组变量中.
use ndarray as nd;
array_buffer: nd::Array2<f32>, loc: &[f32; 3], scl: &[f32; 3]...
...
// scale then rotate new verts then add displacement
let new_verts = &new_buf.array_buffer.slice(s![.., …Run Code Online (Sandbox Code Playgroud) 我正在通过codefights练习工作,并最终得到一些混乱的代码,在Python中,相对简单的字符串切片和连接:
s = "the quick (brown (fox) jumps) over"
(f, t) = (18, 21)
ss = s[:f] + s[t-1:f-1:-1] + s[t:]
Run Code Online (Sandbox Code Playgroud)
在Rust:
let s = String::from("the quick (brown (fox) jumps) over");
let sc: Vec<_> = s.chars().collect();
let (f, t) = (18, 21); // result of searching through sc
let mut new_s: Vec<_> = sc[..f].into_iter().collect();
new_s.extend(&sc[f..t].into_iter().rev().collect::<Vec<_>>());
new_s.extend(&sc[t..].into_iter().collect::<Vec<_>>());
let mut ss = String::with_capacity(new_s.len());
for c in new_s.iter() {ss.push(**c);}
Run Code Online (Sandbox Code Playgroud)
主要是通过添加东西来修复编译错误我最终得到了复杂性,我似乎无法减少.在Rust中执行此操作的"正确"方法是什么?
我没有像使用答案那样做,replace()因为这是一个简单的问题,可以搜索字符串并反转匹配括号内的部分.