是否将多个记录重新分配到记录数组?

2024-10-03 11:14:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想对记录数组的某些列应用转换并重新分配这些值。规范的做法是什么?在

List = [['a',.3,.3],
        ['b',-.5,.4]]

Arr = np.rec.fromrecords(List,names=['id','var1','var2'])

我想对一些变量进行缩放。我举个例子,但一般来说,缩放比减法更复杂。在

^{pr2}$

这不管用

Arr[['var1','var2']].mean(0)
TypeError: cannot perform reduce with flexible type

所以我必须先转换为非结构化数组,然后如何重新分配回记录数组?我要循环吗?在

Unstr = Arr[['var1','var2']].view('float').reshape(len(Arr),-1)

Arr[['var1','var2']] = scale(Unstr)

IndexError: unsupported iterator index

Tags: 规范idnamesnp记录数组list例子
1条回答
网友
1楼 · 发布于 2024-10-03 11:14:06

为什么不一个一个地缩放变量呢?在

In [13]: %paste
import numpy as np

List = [['a',.3,.3],
        ['b',-.5,.4]]

scale = lambda x: x - x.mean()
Arr = np.rec.fromrecords(List,names=['id','var1','var2'])

vars_to_scale = ['var1', 'var2']
for var in vars_to_scale:
    Arr[var] = scale(Arr[var])
print Arr
##   End pasted text  
[('a', 0.4, -0.04999999999999999) ('b', -0.4, 0.050000000000000044)]

相关问题 更多 >