繁体   English   中英

从列表/一维数组中填充二维数组 python 值

[英]fill 2d array python value from a list / 1d array

如何从更新的一维列表中填充二维数组值?

例如,我有一个从这段代码中得到的列表:

a=[]
for k, v in data.items():
     b=v/sumcount
     a.append(b)

我想要做的是生成几个“a”列表并将它们的值放入具有不同列的二维数组中。 或者直接将 b 值放入二维数组中,其中一列表示 k 数的循环。

*我的困难是,k 不是 integer。它的字典键 (str)。 其长度=9

我试过这个但不起作用:

row  = len(data.items())
matrix=np.zeros((9,2))
for i in range (1,3) :
    a=[]
    for k, v in data.items():
        b=v/sumcount
        matrix[x][i].fill(b), for x in range (1, 10)
 

一个列表是

1
2
3
4
5
6
7
8
9

例如,我执行外循环,我期望的是 *例如 1 到 2 外循环,所以我希望会有 2 列和 9 行。

1   6
2   7
3   8
4   9
5   14
6   15
7   16
8   17
9   18

我想用 b 填充矩阵值

要使用更新的一维列表中的值填充二维数组,您可以使用嵌套的 for 循环。 外循环将遍历二维数组的列,内循环将遍历行。 对于每一列,您可以更新列表 a,然后使用内部循环用 a 中的值填充二维数组的相应列。

以下是如何实现此功能的示例:

# Initialize the 2D array with zeros
row = len(data.items())
col = 2  # Number of columns in the 2D array
matrix = np.zeros((row, col))

# Iterate over the columns of the 2D array
for i in range(col):
    # Update the list 'a'
    a = []
    for k, v in data.items():
        b = v / sumcount
        a.append(b)
    
    # Fill the current column of the 2D array with the values from 'a'
    for j in range(row):
        matrix[j][i] = a[j]

这应该用更新后的一维列表 a 中的值填充二维数组矩阵,每一列对应于外循环的不同迭代。

import numpy as np
import pandas as pd

matrix = np.zeros((9, 2))

df = pd.DataFrame({'aaa': [1, 2, 3, 4, 5, 6, 7, 8, 9]})

sumcount = [1, 2]
for i in range(len(sumcount)):
    matrix[:, i] = df['aaa']/sumcount[i]

print(matrix)

据我了解:您需要从 dataframe 中获取该列的结果并将其放入numpy数组中。 如果您的sumcount是相同的数字,则无需遍历每一行。 这将慢慢起作用。 通常,如果没有其他可能性,循环是最后的手段。

切片用于设置numpy中的值。

bbb = np.array([df['aaa']/sumcount[i] for i in range(len(sumcount))]).transpose()
    
print(bbb)

或者使用list comprehension完全不使用循环,将结果包装在np.array中并应用transpose

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM