[英]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.