微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将一个 numpy 数组拆分为 8 个元素的数组并反转每个数组

如何解决将一个 numpy 数组拆分为 8 个元素的数组并反转每个数组

好吧,我有一个这样的 numpy 数组:

a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]

我想要的输出是:

b=['87654321','161514131211109','2423222120191817']

为此,我需要首先将“a”拆分为 8 个元素的数组,然后我有一个这样的列表:

np.split(a) = [array([1,8],dtype=int8),array([9,16],array([17,24],dtype=int8)] 

所以,我需要将每个数组反转到其中并将数字连接起来以形成一个关节数字列表。

解决方法

不需要 numpy,尽管它也适用于数组。一种方式:

>>> [''.join(str(c) for c in a[x:x+8][::-1]) for x in range(0,len(a),8)]
['87654321','161514131211109','2423222120191817']
,

试试这个。您重塑数据,然后将其转换为字符串元素。循环并将其附加到新列表中。

import numpy as np

a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]



lst = list(np.array(a).reshape(3,8).astype("U"))
my_lst = []
for i in lst:
    my_lst.append("".join(i[::-1]))
print(my_lst)
,

最简单的方法是先对原数组进行反转(或创建反转副本),然后进行拆分:

a = [1,24]
acopy = a[::-1]
splitted = np.array_split(acopy,3)
print(splitted[0])  # [24 23 22 21 20 19 18 17]
print(splitted[1])  # [16 15 14 13 12 11 10 9]
print(splitted[2])  # [8 7 6 5 4 3 2 1]

现在当列表反转时,你可以连接每个列表的元素来制作字符串:

str1 = ''.join(str(x) for x in splitted[0])  # '2423222120191817'
str2 = ''.join(str(x) for x in splitted[1])  # '161514131211109'
str3 = ''.join(str(x) for x in splitted[2])  # '87654321'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。