标签: numpy-ndarray

Numpy 2D 数组获取总数的百分比

我刚刚开始使用 numpy..

得到下面的 np 表,想计算每个单元格占列总数的百分比。

data = np.array([[7,16,17], [12,11,3]])
headers = ["Grundskola", "Gymn", "Akademisk"]

# tabulate data
table = tabulate(data, headers, tablefmt="github")

# output
print(table)

|   Grundskola |   Gymn |   Akademisk |
|--------------|--------|-------------|
|            7 |     16 |          17 |
|           12 |     11 |           3 |
Run Code Online (Sandbox Code Playgroud)

到:

|   Grundskola |   Gymn |   Akademisk |
|--------------|--------|-------------|
|           39%|    59% |         85% |
|           61%|    41% |         15% |
Run Code Online (Sandbox Code Playgroud)

我知道 np.sum(data2, axis=0/1) 会给我总数,但我如何使用它来计算数组。

数组的大小可以不同...

python numpy percentage python-3.x numpy-ndarray

6
推荐指数
1
解决办法
9896
查看次数

PIL 类型错误:无法处理此数据类型:(1, 1, 1),|u1

我有一个numpy.ndarray形状(1,28,28),值是 [0,1] 范围内的浮点。我的最终目标是将数组保存为 png 图像。

即使在转置数组并将其与 255 相乘以获得 uint 值之后,它仍然会抛出错误*** TypeError: Cannot handle this data type: (1, 1, 1), |u1

我正在使用以下代码:

im = Image.fromarray((img.transpose(1,2,0) * 255).astype(np.uint8))
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

PS我已经在这里研究过这个建议。

arrays numpy image python-imaging-library numpy-ndarray

6
推荐指数
1
解决办法
2万
查看次数

在运行时向 Numpy 数组添加属性

我正在尝试使用 setattr 将属性添加到 Numpy ndarray,但出现错误:

import numpy as np

x = np.array([1, 2, 4])
setattr(x, 'new_attr', 1)
Run Code Online (Sandbox Code Playgroud)

AttributeError:numpy.ndarray 对象没有属性 new_attr

如何向 Numpy ndarray 添加新属性?

python numpy numpy-ndarray

6
推荐指数
1
解决办法
2622
查看次数

ValueError:轴与数组不匹配 - 无法转置数组

回溯错误

Traceback (most recent call last):
File "C:\Users\trial2\trial.py", line 55, in <module>
image_stack(image)
File "C:\Users\trial2\trial.py", line 41, in image_stack
transposed_axes = np.transpose(img, axes=concat)
File "<__array_function__ internals>", line 5, in transpose
File "C:\Users\trial2\venv\lib\site-packages\numpy\core\fromnumeric.py", line 660, in transpose
return _wrapfunc(a, 'transpose', axes)
File "C:\Users\trial2\venv\lib\site-packages\numpy\core\fromnumeric.py", line 57, in _wrapfunc
return bound(*args, **kwds)
ValueError: axes don't match array
Run Code Online (Sandbox Code Playgroud)

回溯错误也存在,如果这有助于解决问题,我需要为已作为参数输入到函数中的图像计算新的转置轴。该函数获取图像的形状,然后计算图像的转置轴。问题发生在将图像数组转置到新轴时。我无法弄清楚为什么它不起作用的问题。我是否需要将 concat 变量转换为元组才能正常工作,还是其他原因导致了问题

def image_stack(image):
    img_shape = cv2.imread(image).shape
    img = np.asarray(img_shape)
    print(type(img))
    n = len(img)
    val_1 = list(range(1, n - 1, 2))
    val_2 = list(range(0, n …
Run Code Online (Sandbox Code Playgroud)

python opencv transpose numpy numpy-ndarray

6
推荐指数
1
解决办法
2万
查看次数

Numpy 在所有元素之间做乘积,然后插入一个三角形的二维数组

假设我们在下面有一个一维数组

arr = np.array([a,b,c])
Run Code Online (Sandbox Code Playgroud)

我需要做的第一件事是制作所有元素的产品,即

[ab,ac,bc]
Run Code Online (Sandbox Code Playgroud)

然后用这个元素构造一个二维三角形数组

[
[a,ab,ac],
[0,b,bc],
[0,0,c]
]

Run Code Online (Sandbox Code Playgroud)

arrays numpy python-3.x numpy-einsum numpy-ndarray

5
推荐指数
1
解决办法
114
查看次数

从基于列的数组返回多数加权投票

我有一个矩阵x,其3 x 3维度和向量w3,

x = np.array([[1, 2, 1],
              [3, 2 ,1],
              [1, 2, 2]])

w = np.array([0.3, 0.4, 0.3])
Run Code Online (Sandbox Code Playgroud)

我需要生成另一个向量y,该向量对 x. 的每一列x由 中的相应值加权w。像这样的东西:

for y[0],它应该寻找X[0] => [1, 2, 1]

  • 值为 1 = 第一和第三 [0,2] 的列
  • 值为 2 = 秒 [1] 的列
  • 值为 3 = 无的列

w按其在 X 中的值分组的列的权重 (in )求和:

  • 值为 1 的列的权重总和: 0.3 + 0.3 = 0.6
  • 值为 2 的列的权重总和: …

python numpy numpy-ndarray

5
推荐指数
1
解决办法
156
查看次数

Numpy“Fortran”式的重塑?

假设我有一个这样X的形状数组(6, 2)

import numpy as np
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
Run Code Online (Sandbox Code Playgroud)

我想将它重塑为一个 shape 数组(3, 2, 2),所以我这样做了:

X.reshape(3, 2, 2)
Run Code Online (Sandbox Code Playgroud)

并得到:

array([[[ 1,  2],
        [ 3,  4]],

       [[ 5,  6],
        [ 7,  8]],

       [[ 9, 10],
        [11, 12]]])
Run Code Online (Sandbox Code Playgroud)

但是,我需要不同格式的数据。准确地说,我想结束:

array([[[ 1,  2],
        [ 7,  8]],

       [[ 3,  4],
        [ 9,  10]],

       [[ 5, 6],
        [11, 12]]])
Run Code Online (Sandbox Code Playgroud)

我应该用reshape这个还是别的什么?在 Numpy 中执行此操作的最佳方法是什么?

python arrays numpy python-3.x numpy-ndarray

5
推荐指数
2
解决办法
90
查看次数

如何在不使用循环的情况下使用自己的度量创建距离矩阵?

我有一个这样的 np.arrray:

[[ 1.3 , 2.7 , 0.5 , NaN , NaN],
[ 2.0 , 8.9 , 2.5 , 5.6 , 3.5],
[ 0.6 , 3.4 , 9.5 , 7.4 , NaN]]
Run Code Online (Sandbox Code Playgroud)

还有一个函数来计算两行之间的距离:

def nan_manhattan(X, Y):
    nan_diff = np.absolute(X - Y)
    length = nan_diff.size
    return np.nansum(nan_diff) * length / (length - np.isnan(nan_diff).sum())
Run Code Online (Sandbox Code Playgroud)

我需要所有成对距离,而且我不想使用循环。我怎么做?

python numpy numpy-ndarray

5
推荐指数
1
解决办法
123
查看次数

AttributeError:'numpy.ndarray'对象没有属性'unsqueeze'

pyhtorch我正在使用和运行训练代码numpy

这是plot_example函数:

def plot_example(low_res_folder, gen):
    files=os.listdir(low_res_folder)
    
    gen.eval()
    for file in files:
        image=Image.open("test_images/" + file)
        with torch.no_grad():
            upscaled_img=gen(
                config1.both_transform(image=np.asarray(image))["image"]
                .unsqueeze(0)
                .to(config1.DEVICE)
            )
        save_image(upscaled_img * 0.5 + 0.5, f"saved/{file}")
    gen.train()
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是该unsqueeze属性引发错误:

File "E:\Downloads\esrgan-tf2-masteren\modules\train1.py", line 58, in train_fn
    plot_example("test_images/", gen)
    
File "E:\Downloads\esrgan-tf2-masteren\modules\utils1.py", line 46, in plot_example
    config1.both_transform(image=np.asarray(image))["image"]
    
AttributeError: 'numpy.ndarray' object has no attribute 'unsqueeze'
Run Code Online (Sandbox Code Playgroud)

该网络是GAN网络,gen()代表生成器。

python-3.x pytorch numpy-ndarray

5
推荐指数
1
解决办法
1万
查看次数

pandas合并如何在结果不匹配时将默认Nan设置为0

我正在合并 2 个 dfs,df1 和 df2,虽然不匹配,但结果将为 Nan,但我需要它默认为 0。

df1 = pd.merge(df1, df2, left_on='MortTab', right_on='MortTab', how='left',suffixes=(' ', ''))
Run Code Online (Sandbox Code Playgroud)

现在我用这种方式将Nan转换为0:

for i in ['col1','col2','col3']: #columns that I want to check the values are NaN or not
    df1[i] = np.where(df1[i].isnull(), 0, df_ia[i])  #if it's NaN, convert it to 0,or keep the same
Run Code Online (Sandbox Code Playgroud)

我手动循环每个列值来检查,如果该值是 NaN ,如果是,将其转换为 0 ,如果否保持不变。

有更好的方法吗?

python numpy dataframe pandas numpy-ndarray

5
推荐指数
1
解决办法
4538
查看次数