有没有一种方法可以从表中获取数据,例如:
axis0 axis1 value 0 0 2 1 1 1 0 1 3
(图像)数组
[[2 3] [nan 1]]
使用向量化操作或类似的方法?是的,在数据中,有些点缺失了,那么应该有nan或等效值。现在我用for循环将值插入一个所有值都是nan的数组中,但是当有更多的数据时,处理数据会很慢。
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.]])
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.]]
从数据中提取axis0,axis1和values。然后计算结果数组的维数,然后使用np.full创建一个空数组,填充NaN。然后在空数组中填充值。
axis0
axis1
values
np.full
NaN
2条答案
按热度按时间jhkqcmku1#
选项1:创建一个具有所需形状的空数组,然后使用来自数组中的信息更新数组中的值
选项2:在axis列上透视框架,然后重新索引以确保正确的形状,然后转换为numpy
结果
jaql4c8m2#
输出:-
从数据中提取
axis0
,axis1
和values
。然后计算结果数组的维数,然后使用np.full
创建一个空数组,填充NaN
。然后在空数组中填充值。