Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从3个列表生成数组_Python - Fatal编程技术网

在python中从3个列表生成数组

在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

我刚刚开始学习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
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”
,具体取决于您预期的动物或天数。