GVKun编程网logo

Python-将pandas数据框转换为NumPy数组(pandas转换成numpy)

23

如果您想了解Python-将pandas数据框转换为NumPy数组的相关知识,那么本文是一篇不可错过的文章,我们将对pandas转换成numpy进行全面详尽的解释,并且为您提供关于comvertind

如果您想了解Python-将pandas数据框转换为NumPy数组的相关知识,那么本文是一篇不可错过的文章,我们将对pandas转换成numpy进行全面详尽的解释,并且为您提供关于comvertind pandas数据框时,无法将NumPy数组转换为张量、Pandas数据框/ numpy数组“轴”定义中的歧义、python – 如何将numpy数组作为对象存储在pandas数据框中?、python – 将numpy列表数组转换为numpy数组的有价值的信息。

本文目录一览:

Python-将pandas数据框转换为NumPy数组(pandas转换成numpy)

Python-将pandas数据框转换为NumPy数组(pandas转换成numpy)

我对知道如何将熊猫数据框转换为NumPy数组感兴趣。

数据框:

import numpy as npimport pandas as pdindex = [1, 2, 3, 4, 5, 6, 7]a = [np.nan, np.nan, np.nan, 0.1, 0.1, 0.1, 0.1]b = [0.2, np.nan, 0.2, 0.2, 0.2, np.nan, np.nan]c = [np.nan, 0.5, 0.5, np.nan, 0.5, 0.5, np.nan]df = pd.DataFrame({''A'': a, ''B'': b, ''C'': c}, index=index)df = df.rename_axis(''ID'')

label   A    B    CID                                 1   NaN  0.2  NaN2   NaN  NaN  0.53   NaN  0.2  0.54   0.1  0.2  NaN5   0.1  0.2  0.56   0.1  NaN  0.57   0.1  NaN  NaN

我想将其转换为NumPy数组,如下所示:

array([[ nan,  0.2,  nan],       [ nan,  nan,  0.5],       [ nan,  0.2,  0.5],       [ 0.1,  0.2,  nan],       [ 0.1,  0.2,  0.5],       [ 0.1,  nan,  0.5],       [ 0.1,  nan,  nan]])

我怎样才能做到这一点?

作为奖励,是否可以像这样保留dtype?

array([[ 1, nan,  0.2,  nan],       [ 2, nan,  nan,  0.5],       [ 3, nan,  0.2,  0.5],       [ 4, 0.1,  0.2,  nan],       [ 5, 0.1,  0.2,  0.5],       [ 6, 0.1,  nan,  0.5],       [ 7, 0.1,  nan,  nan]],     dtype=[(''ID'', ''<i4''), (''A'', ''<f8''), (''B'', ''<f8''), (''B'', ''<f8'')])

或类似的?

答案1

小编典典

要将pandas数据框(df)转换为numpy ndarray,请使用以下代码:

df.valuesarray([[nan, 0.2, nan],       [nan, nan, 0.5],       [nan, 0.2, 0.5],       [0.1, 0.2, nan],       [0.1, 0.2, 0.5],       [0.1, nan, 0.5],       [0.1, nan, nan]])

comvertind pandas数据框时,无法将NumPy数组转换为张量

comvertind pandas数据框时,无法将NumPy数组转换为张量

如何解决comvertind pandas数据框时,无法将NumPy数组转换为张量?

我正在尝试将pandas数据框转换为tf数据集,但我经常遇到此问题:

Traceback (most recent call last):
  File "/home/arch_poppin/dev/AI/reviews/rev.py",line 36,in <module>
    dataset = tf.data.Dataset.from_tensor_slices((df.values,label.values))
  File "/usr/lib/python3.8/site-packages/tensorflow/python/data/ops/dataset_ops.py",line 689,in from_tensor_slices
    return TensorSliceDataset(tensors)
  File "/usr/lib/python3.8/site-packages/tensorflow/python/data/ops/dataset_ops.py",line 3066,in __init__
    element = structure.normalize_element(element)
  File "/usr/lib/python3.8/site-packages/tensorflow/python/data/util/structure.py",line 129,in normalize_element
    ops.convert_to_tensor(t,name="component_%d" % i,dtype=dtype))
  File "/usr/lib/python3.8/site-packages/tensorflow/python/profiler/trace.py",line 163,in wrapped
    return func(*args,**kwargs)
  File "/usr/lib/python3.8/site-packages/tensorflow/python/framework/ops.py",line 1535,in convert_to_tensor
    ret = conversion_func(value,dtype=dtype,name=name,as_ref=as_ref)
  File "/usr/lib/python3.8/site-packages/tensorflow/python/framework/tensor_conversion_registry.py",line 52,in _default_conversion_function
    return constant_op.constant(value,dtype,name=name)
  File "/usr/lib/python3.8/site-packages/tensorflow/python/framework/constant_op.py",line 264,in constant
    return _constant_impl(value,shape,name,verify_shape=False,File "/usr/lib/python3.8/site-packages/tensorflow/python/framework/constant_op.py",line 276,in _constant_impl
    return _constant_eager_impl(ctx,value,verify_shape)
  File "/usr/lib/python3.8/site-packages/tensorflow/python/framework/constant_op.py",line 301,in _constant_eager_impl
    t = convert_to_eager_tensor(value,ctx,dtype)
  File "/usr/lib/python3.8/site-packages/tensorflow/python/framework/constant_op.py",line 98,in convert_to_eager_tensor
    return ops.EagerTensor(value,ctx.device_name,dtype)
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type int).

这是我的代码,如下所示:

import os
os.environ[''TF_CPP_MIN_LOG_LEVEL''] = ''3''
import io
import tensorflow as tf
from tensorflow import keras
import pandas as pd
import numpy as np


# In[0] open file
df = pd.read_csv(r''PATH'')
df = df.sample(frac=1).reset_index(drop=True)


# In[1] make comma separated integers into list

objectColumnList = list(df.select_dtypes(include=[''object'']).columns)

for column in objectColumnList:
    colArr = []
    for row in df[column]:
        arr = np.asarray(row.split('','')).astype(np.float32)
        colArr.append(arr)
    df[column] = colArr

# In[2] mnake datatset

label = df.pop(''MYLABELS'')

dataset = tf.data.Dataset.from_tensor_slices((df.values,label.values))

如果要重现该错误,请现在指向我正在使用的csv文件的链接: https://mega.nz/file/uOwiwK5K#FVG7K0glMh2mGa53UDWQiG6iKgNFn5972Kdjb-gmAV4由于隐私原因,我必须删除列名

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Pandas数据框/ numpy数组“轴”定义中的歧义

Pandas数据框/ numpy数组“轴”定义中的歧义

对于如何定义python轴,以及它们是否引用DataFrame的行或列,我一直感到困惑。考虑下面的代码:

>>> df = pd.DataFrame([[1,1,1],[2,2,2],[3,3,3]],columns=["col1","col2","col3","col4"])
>>> df
   col1  col2  col3  col4
0     1     1     1     1
1     2     2     2     2
2     3     3     3     3

因此,如果调用df.mean(axis=1),我们将在各行中获得均值:

>>> df.mean(axis=1)
0    1
1    2
2    3

但是,如果调用df.drop(name,axis=1),则实际上是 删除一列 ,而不是一行:

>>> df.drop("col4",axis=1)
   col1  col2  col3
0     1     1     1
1     2     2     2
2     3     3     3

有人可以帮助我了解pandas / numpy / scipy中“轴”的含义吗?

旁注,DataFrame.mean可能只是定义错误。它在文档中DataFrame.mean说这axis=1应该是指列上的平均值,而不是行上的平均值。

python – 如何将numpy数组作为对象存储在pandas数据框中?

python – 如何将numpy数组作为对象存储在pandas数据框中?

我有一系列图像,存储在CVS文件中,每个图像一个字符串,该字符串是9216空格分隔整数的列表.我有一个函数将其转换为96×96 numpy数组.

我希望将这个numpy数组存储在我的数据帧的一列而不是字符串中.

但是,当我从列中检索项目时,它不再可用作numpy数组.

数据可以从这里下载,即training.cvs文件的最后一列.

https://www.kaggle.com/c/facial-keypoints-detection/data

import pandas as pd
import numpy as np

df_train = pandas.read_csv("training.csv")

def convert_to_np_arr(im_as_str):
    im = [int(i) for i in im_as_str.split()]
    im = np.asarray(im)
    im = im.reshape((96,96))
    return im

df_train['Im_as_np'] = df_train.Image.apply(convert_to_np_arr)

im = df_train.Im_as_np[0]
plt.imshow(im,cmap = cm.Greys_r)
plt.show()

如果不使用该函数并应用和存储图像,我直接使用代码它按预期工作

import pandas as pd
import numpy as np

df_train = pandas.read_csv("training.csv")

im = df_train.Image[0]
im = [int(i) for i in im.split()]
im = np.asarray(im)
im = im.reshape((96,96))

plt.imshow(im,cmap = cm.Greys_r)
plt.show()
最佳答案
你存储它的方式应该是正确的.访问数据更加困难.而不是im = df_train.Im_as_np [0]使用ix来访问数据:

im=df_train.ix[0,'Im_as_np']

python – 将numpy列表数组转换为numpy数组

python – 将numpy列表数组转换为numpy数组

我有一些数据存储为dtype = object的numpy数组,我想提取一列列表并将其转换为numpy数组.这似乎是一个简单的问题,但我发现解决它的唯一方法是将整个事物重新编写为列表列表,然后将其重新设置为numpy数组.有更多的 pythonic方法吗?

import numpy as np

arr = np.array([[1,['a','b','c']],[2,'c']]],dtype=object)
arr = arr[:,1]

print(arr)
# [['a','c'] ['a','c']]

type(arr)
# numpy.ndarray
type(arr[0])
# list

arr.shape
# (2,)

将数组重新铸造为dtype = str会引发ValueError,因为它试图将每个列表转换为字符串.

arr.astype(str)
# ValueError: setting an array element with a sequence

可以将整个数组重建为列表列表,然后将其转换为numpy数组,但这似乎是一种迂回的方式.

arr_2 = np.array(list(arr))

type(arr_2)
# numpy.ndarray
type(arr_2[0])
# numpy.ndarray

arr_2.shape
# (2,3)

有一个更好的方法吗?

解决方法

虽然通过列表的方式比通过vstack更快:

In [1617]: timeit np.array(arr[:,1].tolist())
...
100000 loops,best of 3: 11.5 µs per loop
In [1618]: timeit np.vstack(arr[:,1])
...
10000 loops,best of 3: 54.1 µs per loop

vstack正在做:

np.concatenate([np.atleast_2d(a) for a in arr[:,1]],axis=0)

一些替代品:

In [1627]: timeit np.array([a for a in arr[:,1]])
100000 loops,best of 3: 18.6 µs per loop
In [1629]: timeit np.stack(arr[:,1],axis=0)
10000 loops,best of 3: 60.2 µs per loop

请记住,对象数组只包含指向内存中其他位置的列表的指针.虽然arr的2d特性使得选择第2列变得容易,但arr [:,1]实际上是列表的列表.大多数操作都是这样处理的.像重塑这样的东西不会越过那个对象边界.

关于Python-将pandas数据框转换为NumPy数组pandas转换成numpy的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于comvertind pandas数据框时,无法将NumPy数组转换为张量、Pandas数据框/ numpy数组“轴”定义中的歧义、python – 如何将numpy数组作为对象存储在pandas数据框中?、python – 将numpy列表数组转换为numpy数组等相关内容,可以在本站寻找。

本文标签: