gpt4 book ai didi

python - 将 Bitstring(1 和 0 的字符串)转换为 numpy 数组

转载 作者:行者123 更新时间:2023-12-02 01:50:37 25 4
gpt4 key购买 nike

我有一个包含 1 列的 pandas Dataframe,其中包含一串位,例如'100100101'。我想将此字符串转换为 numpy 数组。

我怎样才能做到这一点?

编辑:

使用

features = df.bit.apply(lambda x: np.array(list(map(int,list(x)))))
#...
model.fit(features, lables)

导致 model.fit 出现错误:

ValueError: setting an array element with a sequence.

由于标记的答案,我想出了适合我的案例的解决方案:

for bitString in input_table['Bitstring'].values:
bits = np.array(map(int, list(bitString)))
featureList.append(bits)
features = np.array(featureList)
#....
model.fit(features, lables)

最佳答案

对于字符串s = "100100101",您可以通过至少两种不同的方式将其转换为 numpy 数组。

第一个使用 numpy 的 fromstring方法。这有点尴尬,因为您必须指定数据类型并减去元素的“基”值。

import numpy as np

s = "100100101"
a = np.fromstring(s,'u1') - ord('0')

print a # [1 0 0 1 0 0 1 0 1]

其中 'u1' 是数据类型,ord('0') 用于从每个元素中减去“基”值。

第二种方法是将每个字符串元素转换为整数(因为字符串是可迭代的),然后将该列表传递给np.array:

import numpy as np

s = "100100101"
b = np.array(map(int, s))

print b # [1 0 0 1 0 0 1 0 1]

然后

# To see its a numpy array:
print type(a) # <type 'numpy.ndarray'>
print a[0] # 1
print a[1] # 0
# ...

请注意,随着输入字符串 s 长度的增加,第二种方法的扩展性明显比第一种方法差。对于小字符串,它很接近,但请考虑 timeit 90 个字符的字符串的结果(我刚刚使用了 s * 10):

fromstring: 49.283392424 s
map/array: 2.154540959 s

(这是使用默认的 timeit.repeat 参数,最少运行 3 次,每次运行计算运行 1M 字符串->数组转换的时间)

关于python - 将 Bitstring(1 和 0 的字符串)转换为 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29091869/

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