我正在使用python / numpy并在文档中搜索但无法找到实现此目的的方法
我有这两个数组,并希望将数组内的元素连接成第二个数组
这是我的第一个数组
import numpy as np
a = np.array([0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0])
我的目标是
输出:
[[00000000], [00000000]]
这样做的原因是稍后将数组的每个元素转换为十六进制
答案 0 :(得分:1)
In [100]: a = np.array([[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0]])
In [101]: a
Out[101]:
array([[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]])
In [102]: a.astype(str)
Out[102]:
array([['0', '0', '0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '0', '0', '0']], dtype='<U11')
In [103]: a.astype(str).tolist()
Out[103]:
[['0', '0', '0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '0', '0', '0']]
In [104]: [''.join(row) for row in _]
Out[104]: ['00000000', '00000000']
答案 1 :(得分:0)
您可以尝试这种方法:
import numpy as np
a = np.array([0, 0, 0, 0, 0, 0, 0, 0])
b = np.array([0, 0, 0, 0, 0, 0, 0, 0])
#concatenate
concat=np.concatenate((a,b))
#reshape
print(np.reshape(concat,[-1,8]))
输出:
[[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]]
答案 2 :(得分:0)
更简洁的纯数字版本,改编自this answer:
np.apply_along_axis(lambda row: row.astype('|S1').tostring().decode('utf-8'),
axis=1,
arr=a)
这将创建一个最大长度为8的unicode字符串数组:
array(['00000000', '00000000'], dtype='<U8')
请注意,此方法仅在原始数组(a)包含范围为0 <= i <10的整数时才有效,因为我们使用.astype('|S1')
将它们转换为以零结尾的单个字节。