相关疑难解决方法(0)

Numpy:x和y数组的笛卡尔积指向单个2D点阵列

我有两个numpy数组,定义网格的x和y轴.例如:

x = numpy.array([1,2,3])
y = numpy.array([4,5])
Run Code Online (Sandbox Code Playgroud)

我想生成这些数组的笛卡尔积来生成:

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

在某种程度上,由于我需要在循环中多次执行此操作,因此效率不高.我假设将它们转换为Python列表并使用itertools.product并返回到numpy数组并不是最有效的形式.

python numpy cartesian-product

134
推荐指数
8
解决办法
5万
查看次数

将pandas DataFrame中的对角三角形设置为NaN

给定以下数据框:

import pandas as pd
import numpy as np
a = np.arange(16).reshape(4, 4)
df = pd.DataFrame(data=a, columns=['a','b','c','d'])
Run Code Online (Sandbox Code Playgroud)

我想产生以下结果:

df([[ NaN,  1,  2,  3],
    [ NaN,  NaN,  6,  7],
    [ NaN,  NaN,  NaN, 11],
    [ NaN,  NaN,  NaN,  NaN]])
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试使用np.tril_indicies,但是它仅适用于将df转换为numpy数组的情况,并且仅适用于整数分配(不适用于np.nan):

il1 = np.tril_indices(4)
a[il1] = 0
Run Code Online (Sandbox Code Playgroud)

给出:

array([[ 0,  1,  2,  3],
       [ 0,  0,  6,  7],
       [ 0,  0,  0, 11],
       [ 0,  0,  0,  0]])
Run Code Online (Sandbox Code Playgroud)

...这几乎是我在寻找的东西,但是在分配NaN时bar之以鼻:

ValueError: cannot convert float NaN to integer
Run Code Online (Sandbox Code Playgroud)

而:

df[il1] = 0 …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

4
推荐指数
2
解决办法
904
查看次数

标签 统计

numpy ×2

python ×2

cartesian-product ×1

pandas ×1