在python中从3个列表生成数组
我刚刚开始学习Python,正在尝试从3个列表中创建一个np.array在python中从3个列表生成数组,python,Python,我刚刚开始学习Python,正在尝试从3个列表中创建一个np.array animals=[1,2,3,4,5,6,7,8] analouges=["A","B","C","D"] days=[1,2,3,4,5,6,7,8] 我想创建一个数组,将动物列表作为第一列,日期作为第一行。类似物应该是这样循环的,并且如果列表中的一个发生了变化,它们就能够发生变化 我想要的数组的示例 012345678 1ABCDABCD 2BCDABCDA 3CDABCDAB 4DABCDABC 5ABCDABCD
animals=[1,2,3,4,5,6,7,8]
analouges=["A","B","C","D"]
days=[1,2,3,4,5,6,7,8]
我想创建一个数组,将动物列表作为第一列,日期作为第一行。类似物应该是这样循环的,并且如果列表中的一个发生了变化,它们就能够发生变化
我想要的数组的示例
012345678
1ABCDABCD
2BCDABCDA
3CDABCDAB
4DABCDABC
5ABCDABCD
6BCDABCDA
7CDABCDAB
8DABCDABC
试试这样的
import numpy as np
animals=np.array([1,2,3,4,5,6,7,8])
analouges=np.array(["A","B","C","D"])
days=np.array([1,2,3,4,5,6,7,8])
output = np.zeros((animals.size+1, days.size+1), dtype="U256")
for i in range(animals.size+1):
analogueCount = i-1 # for keeping track of the cycling analogue index
for j in range(days.size+1):
# Dealing with the rows and columns
if i == 0 and j ==0:
output[i, j] = str(0)
elif i == 0:
output[i, j] = str(days[j-1])
elif j == 0:
output[i, j] = str(animals[i-1])
else:
analogueIndex = (analogueCount + j - 1) % analouges.size
output[i, j] = analouges[analogueIndex]
print(output)
它的输出为
[['0' '1' '2' '3' '4' '5' '6' '7' '8']
['1' 'A' 'B' 'C' 'D' 'A' 'B' 'C' 'D']
['2' 'B' 'C' 'D' 'A' 'B' 'C' 'D' 'A']
['3' 'C' 'D' 'A' 'B' 'C' 'D' 'A' 'B']
['4' 'D' 'A' 'B' 'C' 'D' 'A' 'B' 'C']
['5' 'A' 'B' 'C' 'D' 'A' 'B' 'C' 'D']
['6' 'B' 'C' 'D' 'A' 'B' 'C' 'D' 'A']
['7' 'C' 'D' 'A' 'B' 'C' 'D' 'A' 'B']
['8' 'D' 'A' 'B' 'C' 'D' 'A' 'B' 'C']]
我想这就是你想要的 示例是Missing您是如何尝试解决此问题的?我尝试使用for循环,但遇到了重复列表模拟的问题。在我看来,您不能使用循环来生成像第一行这样的特殊事件,但是您可以调用函数来完成您想做的事情。这正是我想要的。非常感谢。我知道你试过一点。如果我的天数或动物数超过1,我只得到第一个数字。我不明白为什么?你能解释一下不止一个数字是什么意思吗?像一个以上的数字(如15或更多)。在这种情况下,请尝试将no.zeros()的数据类型更改为
“string”
。完全正确。我曾尝试将数据类型更改为“string”,但无法将dtype
更改为“object”
或“U256”
,具体取决于您预期的动物或天数。