【发布时间】:2021-06-23 00:49:36
【问题描述】:
mat = [['1', '2', '3', '4', '5'],
['6', '7', '8', '9', '10'],
['11', '12', '13', '14', '15']]
假设,我有这个向量的向量。
说,我需要提取每行的第二列,将它们转换为二进制,然后创建它们的向量。
不使用NumPy也可以吗?
【问题讨论】:
mat = [['1', '2', '3', '4', '5'],
['6', '7', '8', '9', '10'],
['11', '12', '13', '14', '15']]
假设,我有这个向量的向量。
说,我需要提取每行的第二列,将它们转换为二进制,然后创建它们的向量。
不使用NumPy也可以吗?
【问题讨论】:
对转置列表使用 zip 并使用枚举创建循环并使用 bin() 按 id 过滤。
mat = [['1', '2', '3', '4', '5'],
['6', '7', '8', '9', '10'],
['11', '12', '13', '14', '15']]
vec = [[bin(int(r)) for r in row] for idx, row in enumerate(zip(*mat)) if idx == 1][0]
print(vec) # ['0b10', '0b111', '0b1100']
【讨论】:
是的。这可以通过以下代码实现:
mat = [['1', '2', '3', '4', '5'],
['6', '7', '8', '9', '10'],
['11', '12', '13', '14', '15']]
def decimalToBinary(n):
return bin(n).replace("0b", "")
new_vect = []
for m in mat:
m = int(m[1])
new_vect.append(decimalToBinary(m))
print (new_vect)
希望这是意料之中的
['10', '111', '1100']
【讨论】: