numpy 使用矢量化操作从表到(图像)数组

camsedfj  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(99)

有没有一种方法可以从表中获取数据,例如:

axis0  axis1  value
0      0      2
1      1      1
0      1      3

(图像)数组

[[2 3]
[nan 1]]

使用向量化操作或类似的方法?是的,在数据中,有些点缺失了,那么应该有nan或等效值。
现在我用for循环将值插入一个所有值都是nan的数组中,但是当有更多的数据时,处理数据会很慢。

jhkqcmku

jhkqcmku1#

选项1:创建一个具有所需形状的空数组,然后使用来自数组中的信息更新数组中的值

x, y = df[['axis0', 'axis1']].max() + 1
arr = np.full((x, y), np.nan)
arr[df['axis0'], df['axis1']] = df['value']

选项2:在axis列上透视框架,然后重新索引以确保正确的形状,然后转换为numpy

x, y = df[['axis0', 'axis1']].max() + 1
(
    df
    .pivot(index='axis0', columns='axis1', values='value')
    .reindex(index=range(x), columns=range(y))
    .to_numpy()
)

结果

array([[ 2.,  3.],
       [nan,  1.]])
jaql4c8m

jaql4c8m2#

import numpy as np

 data = np.array([
    [0, 0, 2],
    [1, 1, 1],
    [0, 1, 3]
])

axis0 = data[:, 0]
axis1 = data[:, 1]
values = data[:, 2]

rows = np.max(axis0) + 1
cols = np.max(axis1) + 1
   
result = np.full((rows, cols), np.nan)

result[axis0, axis1] = values
print(result)

输出:-

[[ 2.  3.]
 [nan  1.]]

从数据中提取axis0axis1values。然后计算结果数组的维数,然后使用np.full创建一个空数组,填充NaN。然后在空数组中填充值。

相关问题