如果您想了解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)
- comvertind pandas数据框时,无法将NumPy数组转换为张量
- Pandas数据框/ numpy数组“轴”定义中的歧义
- python – 如何将numpy数组作为对象存储在pandas数据框中?
- python – 将numpy列表数组转换为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数组转换为张量?
我正在尝试将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数组“轴”定义中的歧义
对于如何定义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数据框中?
我有一系列图像,存储在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.ix[0,'Im_as_np']
python – 将numpy列表数组转换为numpy数组
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)
有一个更好的方法吗?
解决方法
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数组等相关内容,可以在本站寻找。
本文标签: