gpt4 book ai didi

python - numpy array converted to pandas dataframe drops values

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:59 25 4
gpt4 key购买 nike

我需要为二维网格的每个节点计算统计数据。我认为执行此操作的简单方法是采用两个范围的交叉连接(AKA 笛卡尔积)。我使用 numpy 作为这个函数实现了这个:

def node_grid(x_range, y_range, x_increment, y_increment):
x_min = float(x_range[0])
x_max = float(x_range[1])
x_num = (x_max - x_min)/x_increment + 1
y_min = float(y_range[0])
y_max = float(y_range[1])
y_num = (y_max - y_min)/y_increment + 1

x = np.linspace(x_min, x_max, x_num)
y = np.linspace(y_min, y_max, y_num)

ng = list(product(x, y))
ng = np.array(ng)
return ng, x, y

但是,当我将其转换为 pandas 数据框时,它会丢弃值。例如:

In [2]: ng = node_grid(x_range=(-60, 120), y_range=(0, 40), x_increment=0.1, y_increment=0.1)
In [3]: ng[0][(ng[0][:,0] > -31) & (ng[0][:,0] < -30) & (ng[0][:,1]==10)]
Out[3]: array([[-30.9, 10. ],
[-30.8, 10. ],
[-30.7, 10. ],
[-30.6, 10. ],
[-30.5, 10. ],
[-30.4, 10. ],
[-30.3, 10. ],
[-30.2, 10. ],
[-30.1, 10. ]])

In [4]: node_df = pd.DataFrame(ng[0])
node_df.columns = ['xx','depth']
print(node_df[(node_df.depth==10) & node_df.xx.between(-30,-31)])
Out[4]:Empty DataFrame
Columns: [xx, depth]
Index: []

数据框不为空:

In [5]: print(node_df.head())
Out[5]: xx depth
0 -60.0 0.0
1 -60.0 0.1
2 -60.0 0.2
3 -60.0 0.3
4 -60.0 0.4

numpy 数组中的值在被放入 pandas 数组时被删除。为什么?

最佳答案

“between”函数要求第一个参数小于后者。


在:print(node_df[(node_df.depth==10) & node_df.xx.between(-31,-30)])
xx深度
116390 -31.0 10.0
116791 -30.9 10.0
117192 -30.8 10.0
117593 -30.7 10.0
117994 -30.6 10.0
118395 -30.5 10.0
118796 -30.4 10.0
119197 -30.3 10.0
119598 -30.2 10.0
119999 -30.1 10.0
120400 -30.0 10.0

为清楚起见,使用的 product() 函数来自 itertools 包,即 from itertools import product

关于python - numpy array converted to pandas dataframe drops values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39132712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com