gpt4 book ai didi

python - 将记录添加到 numpy 记录数组

转载 作者:太空狗 更新时间:2023-10-29 17:54:31 25 4
gpt4 key购买 nike

假设我定义了一个记录数组

>>> y=np.zeros(4,dtype=('a4,int32,float64'))

然后我继续填写可用的 4 条记录。现在我得到了更多的数据,比如

>>> c=('a',7,'24.5')

并且我想将此记录添加到 y。我想不出一个干净的方法来做到这一点。我在 np.concatenate() 中看到的最好的,但这需要将 c 本身变成一个记录数组。有什么简单的方法可以将我的元组 c 添加到 y 上吗?这看起来应该非常简单并且有广泛的记录。如果是的话,我们深表歉意。我没能找到它。

最佳答案

您可以使用 numpy.append(),但由于您还需要将新数据转换为记录数组:

import numpy as np
y = np.zeros(4,dtype=('a4,int32,float64'))
y = np.append(y, np.array([("0",7,24.5)], dtype=y.dtype))

由于 ndarray 不能动态改变它的大小,当你想追加一些新数据时,你需要复制所有数据。您可以创建一个类来降低调整大小的频率:

import numpy as np

class DynamicRecArray(object):
def __init__(self, dtype):
self.dtype = np.dtype(dtype)
self.length = 0
self.size = 10
self._data = np.empty(self.size, dtype=self.dtype)

def __len__(self):
return self.length

def append(self, rec):
if self.length == self.size:
self.size = int(1.5*self.size)
self._data = np.resize(self._data, self.size)
self._data[self.length] = rec
self.length += 1

def extend(self, recs):
for rec in recs:
self.append(rec)

@property
def data(self):
return self._data[:self.length]

y = DynamicRecArray(('a4,int32,float64'))
y.extend([("xyz", 12, 3.2), ("abc", 100, 0.2)])
y.append(("123", 1000, 0))
print y.data
for i in xrange(100):
y.append((str(i), i, i+0.1))

关于python - 将记录添加到 numpy 记录数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246643/

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