用numpy连接数组的元素?

时间:2018-04-12 04:31:11

标签: python arrays numpy

我正在使用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]]

这样做的原因是稍后将数组的每个元素转换为十六进制

3 个答案:

答案 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')将它们转换为以零结尾的单个字节。