小编Kev*_*vin的帖子

Numpy 空列表类型推断

为什么[]在使用时将空列表推断为浮点类型np.append

np.append([1,2,3], [0])
# output: array([1, 2, 3, 0]), dtype = np.int64

np.append([1,2,3], [])
# output: array([1., 2., 3.]), dtype = np.float64
Run Code Online (Sandbox Code Playgroud)

即使使用np.array([1,2,3], dtype=np.int32)as ,这也是持久的arr

无法为 append 指定 dtype,所以我很好奇为什么会发生这种情况。Numpy 的 concatenate 做同样的事情,但是当我尝试指定 dtype 时,我收到一个错误:

np.concatenate([[1,2,3], []], dtype=np.int64)
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: Cannot cast array data from dtype('float64') to dtype('int64') according to the rule 'same_kind'
Run Code Online (Sandbox Code Playgroud)

但最后,如果我设置了不安全的铸造规则,它会起作用:

np.concatenate([[1,2,3], []], dtype=np.int64, casting='unsafe')
Run Code Online (Sandbox Code Playgroud)

为什么被[]认为是浮动?

python numpy

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

将 d3.layout.force v3 更新为 d3.forceSimulation v7

我正在尝试将使用 d3js 版本 3 编写的力导向图更新为 d3js 版本 7。

以下代码片段是使用 d3js v3 的工作实现:

var svg = d3.select("svg"),
  width = +svg.attr("width"),
  height = +svg.attr("height");

graph = {
  nodes: [],
  links: [],
}

var simulation = d3.layout.force()
  .size([width, height])
  .nodes(graph.nodes)
  .links(graph.links)
  .on("tick", function() {
    svg.selectAll('.link')
      .attr("x1", function (d) { return d.source.x })
      .attr("y1", function (d) { return d.source.y })
      .attr("x2", function (d) { return d.target.x })
      .attr("y2", function (d) { return d.target.y })
      
    svg.selectAll('.node')
      .attr("cx", function (d) { return d.x })
      .attr("cy", function …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js

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

独立移动数组中的行

我想按行号移动每一行,并与我想要的输出形状相关。一个例子:

array([[0, 1, 2],        array([[0, 1, 2],                array([[0, 1, 2, 0, 0],
       [1, 2, 3],    ->            [1, 2, 3],      ->            [0, 1, 2, 3, 0],
       [2, 3, 4]])                    [2, 3, 4]])                [0, 0, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

最左边的数组是我的输入,最右边的数组是我想要的输出。这可以推广到更大的数组,例如10x10数组。

有没有很好的方法来做到这一点?


我所拥有的是:

A = np.array([[1, 2, 3],
              [2, 3, 4],
              [3, 4, 5]], dtype=np.float32)

out = np.zeros((A.shape[0], A.shape[1]*2-1))

out[[np.r_[:3]], [np.r_[:3] + np.r_[:3][:,None]]] = A
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

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

Rust 元组赋值

我有以下场景:

use num_bigint::BigUint;

fn add_one(px: BigUint, py: BigUint) -> (BigUint, BigUint) {
    (px+1u32, py+1u32)
}

fn test(x: &[u8], y: &[u8]) {
    let mut x = BigUint::from_bytes_le(x);
    let mut y = BigUint::from_bytes_le(y);

    (x,y) = add_one(x, y);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,出现以下编译错误:

error[E0658]: destructuring assignments are unstable
  --> src/lib.rs:76:11
   |
76 |     (x,y) = ecc_add(x, y);
   |     ----- ^
   |     |
   |     cannot assign to this expression
   |
   = note: see issue #71126 <https://github.com/rust-lang/rust/issues/71126> for more information
Run Code Online (Sandbox Code Playgroud)

这是什么意思?let (x,y) = add_one(x, y);似乎修复了错误,但我认为这不会改变原始x …

rust

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

Serde 自定义序列化器

我正在遵循使用serde. 它提供了使用 Serde 的 JSON 序列化器的基本实现。假设我只想序列化无符号整数u8,u16u32。是否可以以某种方式指定此约束并在用户尝试序列化任何其他类型(例如等)时抛出string错误f32

我也许可以写

fn serialize_string(self, v: string) -> Result<()> {
    return Err(Error::Message("Undefined".to_owned()));
}

fn serialize_f32(self, v: f32) -> Result<()> {
    return Err(Error::Message("Undefined".to_owned()));
}

/* and so forth */
Run Code Online (Sandbox Code Playgroud)

但这感觉太冗长了。

是否可以定义一个用于序列化自定义类型的协议?例如,我可能有一个Point包含两个坐标x和 的结构y。我想Point以压缩格式进行序列化,如下所述: https: //bitcoin.stackexchange.com/a/84588,即将第一个坐标序列化为x任何其他无符号整数,但添加一个小前缀来指示坐标y是偶数还是奇数。然后可以使用前缀(有条件的)派生y出。x

rust serde

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

预计算对数组的跨步访问模式会产生更差的性能吗?

我为 numpy 库编写了一个 c 扩展,用于计算特定类型的 bincount。由于缺少更好的名称,我们调用它fast_compiled并将方法签名放在numpy/core/src/multiarray/multiarraymodule.c里面array_module_methods

{"fast_compiled", (PyCFunction)arr_fast_compiled,
    METH_VARARGS | METH_KEYWORDS, NULL},
Run Code Online (Sandbox Code Playgroud)

以及numpy/core/src/multiarray/compiled_base.c(和compiled_base.h)中的实际实现:

NPY_NO_EXPORT PyObject *
arr_fast_compiled(PyObject *NPY_UNUSED(self), PyObject *args, PyObject *kwds)
{
    PyObject *list_obj = NULL, *strides_obj = Py_None;
    PyArrayObject *list_arr = NULL, *ans = NULL, *strides_arr = NULL;

    npy_intp len, ans_size, total_size;
    npy_intp i, j, k;
    double *dans, *weights;
    npy_intp* strides;

    static char *kwlist[] = {"weights", "strides", NULL};

    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O", 
                kwlist, &list_obj, &strides_obj)) {
            goto fail; …
Run Code Online (Sandbox Code Playgroud)

c python numpy python-c-api

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

是否可以在不复制数据的情况下将 Vec&lt;&amp;[u8]&gt; 展平为 &amp;[u8] ?

我想展平一个包含&[u8]以下内容的向量:

fn main() {
    let x: &[u8] = &b"abc"[..];
    let y: &[u8] = &b"def"[..];
    
    let z: Vec<&[u8]> = vec![x, y];
    
    println!("z: {:?}", z);
    
    let z_flat: &[u8] = z.into_iter().flatten().collect();
    
    println!("z_flat: {:?}", z_flat);
}
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

fn main() {
    let x: &[u8] = &b"abc"[..];
    let y: &[u8] = &b"def"[..];
    
    let z: Vec<&[u8]> = vec![x, y];
    
    println!("z: {:?}", z);
    
    let z_flat: &[u8] = z.into_iter().flatten().collect();
    
    println!("z_flat: {:?}", z_flat);
}
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下方法:

let z_flat: &[u8] = &z.into_iter().map(|x| x.to_vec()).flatten().collect();
Run Code Online (Sandbox Code Playgroud)

编译错误:

error[E0277]: a value of type `&[u8]` …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

numpy ×3

python ×3

rust ×3

arrays ×1

c ×1

d3.js ×1

javascript ×1

python-c-api ×1

serde ×1