【问题标题】:Input to a three dimensional array in python在python中输入一个三维数组
【发布时间】:2016-08-31 23:15:14
【问题描述】:

我是 python 编码的新手,我想知道是否有某种方法可以将 C 中的代码转录为 python:

for (K=1; K<3; K++)
    for (I=0; I<3; I++)
        for (J=0; J<7; J++){
            printf("Year: %d\tProvince: %d\tMonth: %d: ", K, I, J);
            scanf("%f", &A[I][J][K]);
        }

这就是我目前所做的一切,唯一缺少的就是如何在三维数组中输入数据

for k in range(1,3):
    for i in range(1,3):
        for j in range(1,7):
            print("Year: " + str(k) + " Province: " + str(i) + " Month: " + str(j) + ": ")

【问题讨论】:

  • 如果从标准输入读取不是您需要知道的,那么请更具体地描述您不了解的内容。
  • 您可以预先分配一个 3d 列表并填充它,但它不是很 Python 并且难以正确处理。我认为您可能应该在迭代时构建列表,这样会更容易推理。

标签: python c arrays input


【解决方案1】:

如果您只想在标准的原生 python 中执行此操作,则应该可以:

import pprint # To display "3d array" in a recognizable format 
A = [[[0 for _ in range(2)] for _ in range(2)] for _ in range(6)]

for k in range(2):
    for i in range(2):
        for j in range(6):
            print("Year: {0} Province: {1} Month: {2}".format(k,i,j))
            A[j][i][k] = raw_input()

pprint.pprint(A) # for an easy to read 2x2x6 format display

输入一些数字后(例如1-24),给出输出:

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

【讨论】:

    【解决方案2】:

    你可以使用 numpy.假设您想要 float64s 的示例。更改类型添加需要

    import numpy as np
    
    arr = np.empty([2, 2, 6], np.float64)
    for k in range(2):
        for i in range(2):
            for j in range(6):
                print("Year: " + str(k) + " Province: " + str(i) + " Month: " + str(j) + ": ")
                arr[k][i][j] = np.float64(raw_input())
    

    【讨论】:

    • 顺便说一句,为了避免最后一行的IndexError arr[i][j][k] 应该是 arr[k][i][j] 以匹配循环变量的顺序
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2021-03-16
    • 2017-10-12
    • 2020-07-08
    • 2021-11-28
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多